.NET CORE 隨處可使用存放在記憶體中的 Session + 隨處可使用Cookie
1. NUGET包引用 Microsoft.AspNetCore.Session
2. Startup.cs中的相應方法加入些程式碼:
//註冊服務
public void ConfigureServices(IServiceCollection services)
{
............................................
services.AddSession();
............................................
}
//新增
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
............................................
app.UseSession();
............................................
}
3. 以下是控制器中使用SESSION的程式碼,記得要先引用那個名稱空間:
using Microsoft.AspNetCore.Http; //安裝1的包後,在類中引用 這個名稱空間
//賦值
HttpContext.Session.SetString("TestA","123456");
//取值
var aa = HttpContext.Session.GetString("TestA");
4. 那如果還想要用session儲存物件資料結構咋整?那就用This來擴充套件方法咯
public static class SessionObject
{
public static void SetObject<T>(this ISession session, string key, T value)
{
session.SetString(key, JsonConvert.SerializeObject(value));
}
public static T GetObject<T>(this ISession session, string key)
{
var value = session.GetString(key);
return value == null ? default(T) : JsonConvert.DeserializeObject<T>(value);
}
}
最後.這個自己的HttpContext,還能提供cookie哦. GlobalHttpContext.Current.Response.Cookies
另注意,目前只能在Controller中使用,要在其他類中使用Session,需要例項化IHttpContextAccessor,或者傳入已例項化的IHttpContextAccessor(比如從Controller中傳過去)