ASP .NET Core 2.1中使用会话(Session)的解决方法如下:
public void ConfigureServices(IServiceCollection services)
{
services.AddDistributedMemoryCache(); // 使用内存缓存存储Session数据
services.AddSession(options =>
{
options.IdleTimeout = TimeSpan.FromMinutes(30); // 设置Session超时时间
options.Cookie.HttpOnly = true; // 设置Session cookie为HttpOnly
});
// 添加其他服务
// ...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
// 其他中间件
app.UseSession(); // 启用会话
// 其他中间件
// ...
}
using Microsoft.AspNetCore.Http;
// ...
public class HomeController : Controller
{
private readonly IHttpContextAccessor _httpContextAccessor;
public HomeController(IHttpContextAccessor httpContextAccessor)
{
_httpContextAccessor = httpContextAccessor;
}
public IActionResult Index()
{
HttpContext.Session.SetString("Key", "Value"); // 设置会话数据
string value = HttpContext.Session.GetString("Key"); // 获取会话数据
return View();
}
}
@using Microsoft.AspNetCore.Http
@{
var value = Context.Request.HttpContext.Session.GetString("Key");
}
@value
注意:为了在控制器中使用HttpContext.Session,需要注入IHttpContextAccessor服务。在ConfigureServices方法中添加以下代码:
services.AddSingleton();
这样,你就可以在ASP .NET Core 2.1中使用会话了。