Asp.net如何使用Session的方法?這個(gè)問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個(gè)問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!
成都創(chuàng)新互聯(lián)公司專注于門源網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供門源營銷型網(wǎng)站建設(shè),門源網(wǎng)站制作、門源網(wǎng)頁設(shè)計(jì)、門源網(wǎng)站官網(wǎng)定制、微信小程序開發(fā)服務(wù),打造門源網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供門源網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。
前言
2017年就這么悄無聲息的開始了,2017年對(duì)我來說又是特別重要的一年。
元旦放假在家寫了個(gè)Asp.net Core驗(yàn)證碼登錄, 做demo的過程中遇到兩個(gè)小問題,第一是在Asp.net Core中引用dll,以往我們引用DLL都是直接引用,在Core里這樣是不行的,必須基于NuGet添加,或者基于project.json添加,然后保存VS會(huì)啟動(dòng)還原類庫。
第二就是使用Session的問題,Core里使用Session需要添加Session類庫。
添加Session
在你的項(xiàng)目上基于NuGet添加:Microsoft.AspNetCore.Session。
修改startup.cs
在startup.cs找到方法ConfigureServices(IServiceCollection services) 注入Session(這個(gè)地方是Asp.net Core pipeline):services.AddSession();
接下來我們要告訴Asp.net Core使用內(nèi)存存儲(chǔ)Session數(shù)據(jù),在Configure(IApplicationBuilder app,...)中添加代碼:app.UserSession();
Session
1、在MVC Controller里使用HttpContext.Session
using Microsoft.AspNetCore.Http; public class HomeController:Controller { public IActionResult Index() { HttpContext.Session.SetString("code","123456"); return View(); } public IActionResult About() { ViewBag.Code=HttpContext.Session.GetString("code"); return View(); } }
2、如果不是在Controller里,你可以注入IHttpContextAccessor
public class SomeOtherClass { private readonly IHttpContextAccessor _httpContextAccessor; private ISession _session=> _httpContextAccessor.HttpContext.Session; public SomeOtherClass(IHttpContextAccessor httpContextAccessor) { _httpContextAccessor=httpContextAccessor; } public void Set() { _session.SetString("code","123456"); } public void Get() { string code = _session.GetString("code"); } }
存儲(chǔ)復(fù)雜對(duì)象
存儲(chǔ)對(duì)象時(shí)把對(duì)象序列化成一個(gè)json字符串存儲(chǔ)。
public static class SessionExtensions { public static void SetObjectAsJson(this ISession session, string key, object value) { session.SetString(key, JsonConvert.SerializeObject(value)); } public static T GetObjectFromJson(this ISession session, string key) { var value = session.GetString(key); return value == null ? default(T) : JsonConvert.DeserializeObject (value); } }
var myComplexObject = new MyClass(); HttpContext.Session.SetObjectAsJson("Test", myComplexObject); var myComplexObject = HttpContext.Session.GetObjectFromJson("Test");
使用SQL Server或redis存儲(chǔ)
1、SQL Server
添加引用 "Microsoft.Extensions.Caching.SqlServer": "1.0.0"
注入:
// Microsoft SQL Server implementation of IDistributedCache. // Note that this would require setting up the session state database. services.AddSqlServerCache(o => { o.ConnectionString = "Server=.;Database=ASPNET5SessionState;Trusted_Connection=True;"; o.SchemaName = "dbo"; o.TableName = "Sessions"; });
2、Redis
添加引用 "Microsoft.Extensions.Caching.Redis": "1.0.0"
注入:
// Redis implementation of IDistributedCache. // This will override any previously registered IDistributedCache service. services.AddSingleton();
感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)Asp.net如何使用Session的方法大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。