如何在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+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.