.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中传过去)

猜你喜欢

转载自blog.csdn.net/hezhixiang/article/details/83038561
今日推荐