最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

如何在ASP.NET Core中使用Session的示例代碼

 更新時(shí)間:2021年01月22日 09:34:34   作者:一線碼農(nóng)  
這篇文章主要介紹了如何在ASP.NET Core中使用Session的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

ASP.NET Core 是一個(gè)跨平臺(tái),開源的,輕量級(jí),高性能 并且 高度模塊化的web框架,Session 可以實(shí)現(xiàn)用戶信息存儲(chǔ)從而可以在同一個(gè)客戶端的多次請(qǐng)求之間實(shí)現(xiàn)用戶追蹤,在 ASP.Net Core 中可以使用 Microsoft.AspNetCore.Session 中間件來啟用 Session 機(jī)制。

中間件的價(jià)值在于可以在 request -> response 的過程中做一些定制化的操作,比如說:監(jiān)視數(shù)據(jù),切換路由,修改流轉(zhuǎn)過程中的消息體,通常來說:中間件是以鏈?zhǔn)降姆绞焦嗳氲?ASP.Net Core 的 pipeline 管道中,這篇文章主要討論如何使用 Session 中間件。

安裝 Session 中間件

要想使用 session 中間件,你可以使用 Visual Studio 2019 中的 NuGet package manager 可視化界面進(jìn)行安裝,或者通過 NuGet package manager console 命令行輸入如下命令:

Install-Package Microsoft.AspNetCore.Session

配置 session 中間件

現(xiàn)在 Microsoft.AspNetCore.Session 已經(jīng)成功安裝到你的項(xiàng)目中了,接下來可以將它添加到 ASP.Net Core pipeline 中,請(qǐng)注意:為了能夠啟動(dòng) Session,你必須要使用一個(gè) 實(shí)現(xiàn)了 IDistributedCache 接口的 cache store 來作為 session 的底層存儲(chǔ),然后你還要在 ConfigureServices 方法下調(diào)用 AddSession 方法將其塞入 IOC 容器,最后在 Startup.Configure 方法下使用 UseSession 將其塞入到 request -> response 請(qǐng)求管道中,具體代碼如下:

  public void ConfigureServices(IServiceCollection services)
  {
    services.AddDistributedMemoryCache();
    services.AddSession(options =>
    {
      options.IdleTimeout = TimeSpan.FromSeconds(5);
      options.Cookie.HttpOnly = true;
      options.Cookie.IsEssential = true;
    });
    services.AddMvc()
      .SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
  }

一旦 session 中間件加入到了 IOC 容器之后,接下來可以在 Configure 方法中調(diào)用 UseSession 來啟動(dòng) session。

  public void Configure(IApplicationBuilder app, IHostingEnvironment env)
  {
    app.UseHttpsRedirection();
    app.UseStaticFiles();
    app.UseSession();
    app.UseHttpContextItemsMiddleware();
    app.UseMvc();
  }

存儲(chǔ)和獲取 session

你可以使用 Set, SetInt32 和 SetString 這三個(gè)方法來實(shí)現(xiàn) Session 的存儲(chǔ),這些方法有兩個(gè)參數(shù),一個(gè)是鍵,一個(gè)是鍵對(duì)應(yīng)的數(shù)據(jù),而且 Set 方法的 value 對(duì)應(yīng)的是 byte[] 形式。

類似的,你可以使用 Get,GetInt32 和 GetString 方法來實(shí)現(xiàn) session 的讀取,同時(shí) Get 方法接收一個(gè) string 格式的 key,并且返回 byte[] 數(shù)組,要使用這些擴(kuò)展方法,你需要將 Microsoft.AspNetCore.Http 引用到項(xiàng)目中。

下面的代碼展示了如何將數(shù)據(jù)添加到 session 中。

public IActionResult Index()
{
  HttpContext.Session.SetString("Message", "Hello World!");
  HttpContext.Session.SetInt32("Year", 2019);
  return View();
}

接下來再看看如何從 session 中獲取數(shù)據(jù),如下代碼所示:

public IActionResult About()
{
  ViewBag.Message = HttpContext.Session.GetString("Message");
  ViewBag.Year = HttpContext.Session.GetInt32("Year");
  return View();
}

如果你想設(shè)置或者獲取屬于其他類型的數(shù)據(jù),可以在 ISession 接口上新增一個(gè)擴(kuò)展方法并且自己來實(shí)現(xiàn)序列化邏輯,從 session 中設(shè)置或者獲取 復(fù)雜類型時(shí),可以把這個(gè)類型序列化為 json,或者 json 反序列化為 model。

還有一點(diǎn)要特別注意,默認(rèn)的 session 是基于內(nèi)存的,也就是說進(jìn)程關(guān)閉了 session 就會(huì)丟失,如果你想實(shí)現(xiàn)session持久化,可以采用 sqlserver 或者 redis。

譯文鏈接:https://www.infoworld.com/article/3411563/how-to-work-with-session-state-in-aspnet-core.html

到此這篇關(guān)于如何在ASP.NET Core中使用Session的示例代碼的文章就介紹到這了,更多相關(guān)ASP.NET Core使用Session內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

娄底市| 峨眉山市| 新蔡县| 泊头市| 根河市| 根河市| 安宁市| 玉门市| 略阳县| 祥云县| 南皮县| 电白县| 宕昌县| 宁德市| 西昌市| 赣榆县| 台中县| 新竹市| 秦皇岛市| 宁津县| 遂宁市| 仁化县| 惠东县| 化州市| 广元市| 连山| 安阳市| 白城市| 珲春市| 苏尼特左旗| 保山市| 舞钢市| 新乡市| 图片| 西藏| 图片| 平利县| 桐柏县| 子长县| 锦屏县| 临夏县|