如何在 C# ASP.NET Core 中启用 Session?
csharpserver side programmingprogramming更新于 2025/4/14 22:37:17
Session 是 ASP.NET Core 中的一项功能,使我们能够保存/存储用户数据。
Session 将数据存储在服务器上的字典中,并使用 SessionId 作为键。SessionId 存储在客户端的 cookie 中。每次请求都会发送 SessionId cookie。
SessionId cookie 是每个浏览器的,不能在浏览器之间共享。
SessionId cookie 没有指定超时,浏览器会话结束时会将其删除。
在服务器端,会话保留有限的时间。服务器上的默认会话超时为 20 分钟,但可以配置。
Microsoft.AspNetCore.Session 包提供了中间件来管理 ASP.NET Core 中的会话。要在我们的应用程序中使用会话,我们需要将此包作为依赖项添加到 project.json 文件中。
下一步是在 Startup 类中配置会话。
我们需要在启动类的 ConfigureServices 方法中调用"AddSession"方法。
"AddSession"方法有一个重载方法,它接受各种会话选项,如空闲超时、Cookie 名称和 Cookie 域等。
如果我们不传递会话选项,系统将采用默认选项
示例
public class Startup { public void Configure(IApplicationBuilder app){ app.UseSession(); app.UseMvc(); app.Run(context => { return context.Response.WriteAsync("Hello World!"); }); } public void ConfigureServices(IServiceCollection services){ services.AddMvc(); services.AddSession(options => { options.IdleTimeout = TimeSpan.FromMinutes(60); }); } }
如何访问会话
public class HomeController : Controller{ [Route("home/index")] public IActionResult Index(){ HttpContext.Session.SetString("product","laptop"); return View(); } [Route("home/GetSessionData")] public IActionResult GetSessionData(){ ViewBag.data = HttpContext.Session.GetString("product");; return View(); } }