本篇文章為大家展示了Session如何在ASP.NET Core項(xiàng)目中使用,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
創(chuàng)新互聯(lián)公司成立于2013年,先為泰安等服務(wù)建站,泰安等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為泰安企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。安裝 Session 中間件
要想使用 session 中間件,你可以使用 Visual Studio 2019 中的 NuGet package manager 可視化界面進(jìn)行安裝,或者通過 NuGet package manager console 命令行輸入如下命令:
Install-Package Microsoft.AspNetCore.Session
現(xiàn)在 Microsoft.AspNetCore.Session 已經(jīng)成功安裝到你的項(xiàng)目中了,接下來可以將它添加到 ASP.Net Core pipeline 中,請注意:為了能夠啟動(dòng) Session,你必須要使用一個(gè) 實(shí)現(xiàn)了 IDistributedCache 接口的 cache store 來作為 session 的底層存儲,然后你還要在 ConfigureServices 方法下調(diào)用 AddSession 方法將其塞入 IOC 容器,最后在 Startup.Configure 方法下使用 UseSession 將其塞入到 request -> response 請求管道中,具體代碼如下:
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(); }
你可以使用 Set, SetInt32 和 SetString 這三個(gè)方法來實(shí)現(xiàn) Session 的存儲,這些方法有兩個(gè)參數(shù),一個(gè)是鍵,一個(gè)是鍵對應(yīng)的數(shù)據(jù),而且 Set 方法的 value 對應(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。
上述內(nèi)容就是Session如何在ASP.NET Core項(xiàng)目中使用,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
分享名稱:Session如何在ASP.NETCore項(xiàng)目中使用-創(chuàng)新互聯(lián)
分享URL:http://vcdvsql.cn/article18/cdjpdp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、建站公司、品牌網(wǎng)站設(shè)計(jì)、虛擬主機(jī)、動(dòng)態(tài)網(wǎng)站、軟件開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)