Net Core 使用Redis保存进程外session

Posted dwtx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Net Core 使用Redis保存进程外session相关的知识,希望对你有一定的参考价值。

Redsi下载地址:https://github.com/MSOpenTech/redis/releases

技术图片

下载后解压

找到redis.windows.conf文件, (修改密码这步骤可省略

 技术图片

打开 找到requirepass 节点 ,放开注释符 “#”  ,后面的值改成自己要设置的密码

技术图片

 

打开 cmd 窗口,使用 cd 命令切换目录到程序解压的目录或者直接到解压文件的目录下地址栏输入cmd回车  

redis-server.exe redis.windows.conf

技术图片

 

新启动一个cmd窗口  

redis-cli.exe -h 127.0.0.1 -p 6379 -a Mypwd

 技术图片

若没设置密码 执行

redis-cli.exe -h 127.0.0.1 -p 6379

然后使用set  get 执行  存取值

技术图片

 

VS 操作

在项目添加  StackExchange.Redis包

Install-Package StackExchange.Redis

配置文件配置Redis 链接串


  "ConnectionStrings": 
    "RedisConn": "127.0.0.1:6379,allowAdmin=true,password=Mypwd,defaultdatabase=0"
  ,
  "Logging": 
    "LogLevel": 
      "Default": "Trace",
      "System": "Information",
      "Microsoft": "Information"
    
  ,
  "COREHOST_TRACE": 1,
  "AllowedHosts": "*"

Startup.cs 里ConfigureServices方法添加 session 及Redis设置

            services.AddDistributedRedisCache(options =>
            
                options.Configuration = Configuration.GetConnectionString("RedisConn");
                options.InstanceName = "MyTest.Web_";
            );
            services.Configure<CookiePolicyOptions>(options =>
            
                // This lambda determines whether user consent for non-essential cookies is needed for a given request.
                options.CheckConsentNeeded = context => false; // Default is true, make it false
                options.MinimumSameSitePolicy = SameSiteMode.None;
            );

            //添加session
            services.AddSession(options =>
            
                options.IdleTimeout = TimeSpan.FromHours(2); //session 有效期
                options.Cookie.HttpOnly = true;//设为httponly
            );

Startup.cs 里Configuref方法添加 

 

app.UseSession();

 程序使用session既可

//写入
HttpContext.Session.SetString("testkey", "abc");
//读取
string uid = HttpContext.Session.GetString("mruserid");

用Redis管理工具  Redis Desktop Manager 链接查看

 技术图片 

上个图可能显示不全  补下上个图的一部分 

技术图片

 

以上是关于Net Core 使用Redis保存进程外session的主要内容,如果未能解决你的问题,请参考以下文章

进程内和进程外托管的 ASP .NET Core 3 + Identity Server 问题

HTTP 错误 502.5 - 升级到 ASP.NET Core 2.2 后 ANCM 进程外启动失败

将 HttpContext 注入到一个类中,并在 .net core 中调用控制器外的类

[二] ASP.NET Core 应用程序的托管

进程外session(session保存在sqlserver)

.NET Core Redis 驱动推荐,为什么不使用StackExchange.Redis