aaa*_*nme 1 asp.net-core-mvc .net-core asp.net-core
有没有办法访问HttpContext.session类库?(我使用 .Net Core 5)我已经完成configuration所有设置并使用microsoft.AspNetCore.Http,但我仍然无法访问会话变量。如果无法做到这一点,执行需要当前用户 ID/身份的操作的最佳方法是什么?
正如@King King 回答的那样,您可以将其注入IHttpContextAccessor到班级中。
步骤1 添加Session服务
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddSession();
services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
app.UseAuthorization();
app.UseSession();
app.UseEndpoints(endpoints =>
...
}
Run Code Online (Sandbox Code Playgroud)
步骤2 在自定义类中访问Session
public class SessionTest
{
private readonly IHttpContextAccessor _httpContextAccessor;
private ISession _session => _httpContextAccessor.HttpContext.Session;
public SessionTest(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public void setSession()
{
_session.SetString("Test", "Hello World!");
}
public void getSession()
{
var message = _session.GetString("Test");
...
}
}
Run Code Online (Sandbox Code Playgroud)
步骤3 通过自定义类访问会话
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
private readonly IHttpContextAccessor _httpContextAccessor;
private readonly ISession _session;
public HomeController(IHttpContextAccessor httpContextAccessor,ILogger<HomeController> logger)
{
_logger = logger;
_httpContextAccessor = httpContextAccessor;
_session = _httpContextAccessor.HttpContext.Session;
}
public IActionResult Index()
{
SessionTest session = new SessionTest(_httpContextAccessor);
session.setSession();
session.getSession();
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4994 次 |
| 最近记录: |