如何在C# ASP.NET Core中启用Session?


Session是ASP.NET Core中一项允许我们保存/存储用户数据的特性。

Session将数据存储在服务器上的字典中,SessionId用作键。SessionId存储在客户端的cookie中。SessionId cookie会随每个请求一起发送。

SessionId cookie是每个浏览器独有的,不能在浏览器之间共享。

SessionId cookie没有指定超时时间,它们会在浏览器会话结束时被删除。

在服务器端,session会保留一段时间。服务器端的默认session超时时间为20分钟,但可以配置。

**Microsoft.AspNetCore.Session** 包提供了用于管理ASP.NET Core中session的中间件。要在我们的应用程序中使用session,我们需要在project.json文件中添加此包作为依赖项。

下一步是在Startup类中配置session。

我们需要在startup类的ConfigureServices方法中调用“AddSession”方法。

“AddSession”方法有一个重载方法,它接受各种session选项,例如空闲超时、Cookie名称和Cookie域等。

如果我们不传递session选项,系统将采用默认选项。

示例

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);
      });
   }
}

如何访问session

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();
   }
}

更新于:2020年9月24日

17K+ 浏览量

启动您的职业生涯

完成课程获得认证

开始学习
广告