1. 程式人生 > >.NET CORE 隨處可使用存放在記憶體中的 Session + 隨處可使用Cookie

.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中傳過去)