• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ASP.NETCore使用Redis存储Session实现共享Session

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

1.添加nuget程序包:

Microsoft.Extensions.Caching.Redis

2.在appsettings.json中添加Redis配置:

    "ConnectionRedis": {
      "Connection": "127.0.0.1:6379,allowAdmin=true,password=123456,defaultdatabase=0",
      "InstanceName": "SukCore_Redis_Session_",
      "SessionTimeOut": "20"
    },

 3.在startup.cs类中,ConfigureServices 中添加代码:  

public IServiceProvider ConfigureServices(IServiceCollection services)   
{

      services.Configure<CookiePolicyOptions>(options => { // This lambda determines whether user consent for non-essential cookies is needed for a given request. options.CheckConsentNeeded = context => false; //这里要改为false,默认是true,true的时候session无效 options.MinimumSameSitePolicy = SameSiteMode.None; });

     #region 使用Redis保存Session // 这里取连接字符串 自己取吧... ConnectionConfigModel con = ConfigurationManager.GetAppSettings<ConnectionConfigModel>(); services.AddDistributedRedisCache(option => { //redis 连接字符串 option.Configuration = con.ConnectionConfig.ConnectionRedis.Connection; //redis 实例名 option.InstanceName = con.ConnectionConfig.ConnectionRedis.InstanceName; } ); //添加session 设置过期时长分钟 var sessionOutTime = con.ConnectionConfig.ConnectionRedis.SessionTimeOut; services.AddSession(options => { options.IdleTimeout = TimeSpan.FromMinutes(Convert.ToDouble(sessionOutTime)); //session活期时间 options.Cookie.HttpOnly = true;//设为httponly }); #endregion }

Configure 中 添加 app.UseSession();  

注意     app.UseSession(); 一定要在 app.UseMvc 之前 

public void Configure(IApplicationBuilder app, IHostingEnvironment env)  
{
            //使用session
            app.UseSession();
        app.UseMvc(routes =>
            {
                routes.MapRoute(
                    name: "areas",
                    template: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
                routes.MapRoute(
                    name: "default",
                    template: "{controller=Home}/{action=Index}/{id?}");
            });
}

 

 

 

4.在控制器 Controller中添加:

  public class HomeController : Controller
   {
        [HttpPost]
        public NoContentResult Add(string userName,string pwd)
        {
            this.HttpContext.Session.SetString("UserName", userName);
            this.HttpContext.Session.SetString("PassWord", pwd);
            ViewData["UserName"] = this.HttpContext.Session.GetString("UserName");
            ViewData["PassWord"] = this.HttpContext.Session.GetString("PassWord");
       return NoContent(); 
  }

 

  

在调试的过程中遇到一个尴尬的问题  controller中打断点   没有执行session之前 先查看了 session id 发现一直为空  还以为错了  结果最后发现 要先执行代码不能先查看

附上我的错误截图 看没有和我一样傻的 哈哈哈。。。

 

错误的操作

 

 正确的操作 

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
MVC音乐商店-第四部分:Models和数据访问ASP.NETMVC音乐商店发布时间:2022-07-10
下一篇:
ASP.NET取指定长度的随机数发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap