C# MVC +Redis+RedisSessionProvider +Owin 实现真正的 分布式

本文详细介绍如何在ASP.NET中使用Nuget包如Newtonsoft.Json和StackExchange.Redis进行RedisSessionProvider的配置,实现Session状态的分布式存储。文章涵盖WebConfig配置、Global.aspx中的启动配置、Nginx配置等关键步骤,确保Session数据在多台服务器间共享。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.首先 Nuget 安装 

Newtonsoft.Json
RedisSessionProvider

替换成Microsoft.Web.Redis.RedisSessionStateProvider+

StackExchange.Redis.StrongName这个更好

RedisSessionProvider有时候会莫名其妙的没有插入redis-Session

StackExchange.Redis

Owin

2.WebConfig配置

<!-- Redis链接地址(如果开启异步发送TM/Infor 将暂存 要发送的数据)-->
    <add name="RedisExchangeHosts" connectionString="172.20.36.81:6379,password=*,allowAdmin=true,connectTimeout=30,connectRetry=3 " />

<sessionState mode="Custom" customProvider="RedisSessionProvider">
        <providers>
            <add name="RedisSessionProvider" type="RedisSessionProvider.RedisSessionStateStoreProvider, RedisSessionProvider" />
        </providers>
    </sessionState>
    <!--机器码,用于分布式(需要支持跨域)多台 机器必须一致,否则Owin登录验证会失败-->
    <machineKey validationKey="18A251C37D7E8EF5A3BE49252553AF7C3C7C3DD49692E19D43BA55686B97E5488C727897BA8FE11C4BE44D621B723314EF6A006C07AA80682F75332D51EFB4C4" decryptionKey="2E5F65E687C77A6A4CAC82235F1D833EEA3951A995697FD9FBAB9EAF73A1C2FF" validation="SHA1" decryption="AES" />

3.Global.aspx-Application_Start() 配置

#region Session 分布式插件

            var RedisConStr = System.Configuration.ConfigurationManager.ConnectionStrings["RedisExchangeHosts"]?.ConnectionString;
            StackExchange.Redis.ConfigurationOptions redisConfigOpts = ConfigurationOptions.Parse(RedisConStr);
            RedisSessionProvider.Config.RedisConnectionConfig.GetSERedisServerConfig = (HttpContextBase context) =>
            {
                return new KeyValuePair<string, StackExchange.Redis.ConfigurationOptions>(
                    "DefaultConnection",
                    redisConfigOpts);
            };

            #endregion

4.使用

设置 Session["AppUser"] = AppUser;

获取ApplicationUser AppUser = (ApplicationUser)Session["AppUser"] ?? null;

配置 Nginx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值