netcore使用session

发布时间 2023-03-29 17:25:04作者: BloggerSb
   //内存缓存
            services.AddMemoryCache();
            services.AddDistributedMemoryCache();
           
            services.AddSession(opts =>
            {
                opts.IdleTimeout = TimeSpan.FromHours(8); //设置Session闲置超时时间(有效时间周期)
                opts.Cookie.Name = "supor_cookie";
                opts.Cookie.HttpOnly = true;
            });

services.AddHttpContextAccessor();

 

//必须在usemvc之前,否则报错
app.UseSession();

var httpContextAccessor = app.ApplicationServices.GetRequiredService<IHttpContextAccessor>();
HttpContextExpand.Configure(httpContextAccessor);

 

 public static class HttpContextExpand
    {
        private static IHttpContextAccessor _accessor;

        public static Microsoft.AspNetCore.Http.HttpContext Current => _accessor.HttpContext;

        internal static void Configure(IHttpContextAccessor accessor)
        {
            _accessor = accessor;
        }
    }

 

public static class StaticHttpContextExtensions
    {
        public static void AddHttpContextAccessor(this IServiceCollection services)
        {
            services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
        }

        public static IApplicationBuilder UseStaticHttpContext(this IApplicationBuilder app)
        {
            var httpContextAccessor = app.ApplicationServices.GetRequiredService<IHttpContextAccessor>();
            HttpContextExpand.Configure(httpContextAccessor);
            return app;
        }
    }

 

 

参考:

https://www.likecs.com/show-306826559.html

https://www.cnblogs.com/linezero/p/6801602.html