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

会话是ASP.NET Core中的一项功能,使我们能够保存/存储用户数据。

会话将数据存储在服务器上的词典中,并将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("你好,世界!");
      });
   }
   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();
   }
}