如何使用用户名密码通过Microsoft.Web.RedisSessionStateProvider连接远程Redis
问题原因
- 初始配置错误:仅配置了
accessKey(密码参数)未配置用户名参数,Redis 6.0及以上版本默认开启用户名+密码双身份验证,缺少用户名会导致验证不通过,抛出NOAUTH错误。 - 修改后配置错误:connectionString中多余使用单引号包裹密码,未明确指定端口,部分场景下组件会错误将非ssl连接识别为rediss协议,导致连接失败。
正确配置方案
方案1:使用分离参数配置(推荐,可读性更高)
Microsoft.Web.RedisSessionStateProvider 3.0.0及以上版本新增了username参数,补充该参数即可完成双因子验证,配置示例如下:
<add name="RedisSessionStateStore" applicationName="{jam2_}" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="替换为你的Redis服务IP" port="6379" username="替换为你的Redis用户名" accessKey="替换为你的Redis密码" ssl="false" />
如果未单独创建Redis用户,可先尝试将username填为默认值default
方案2:使用connectionString统一配置
注意不要用引号包裹密码,明确指定端口和ssl参数,密码含特殊字符需先做URL编码:
<add name="RedisSessionStateStore" applicationName="{jam2_}" type="Microsoft.Web.Redis.RedisSessionStateProvider" connectionString="redis://替换为你的用户名:替换为你的密码@替换为你的Redis服务IP:6379,ssl=false" />
额外排查项
- 先升级Microsoft.Web.RedisSessionStateProvider NuGet包到3.0.0以上版本,低版本不支持用户名参数
- 确认应用服务器到Redis服务6379端口的网络连通性,无安全组、防火墙拦截规则
- 若密码包含
@/://等特殊字符,需先对密码做URL编码后再填入配置
内容的提问来源于stack exchange,提问作者Ahmed Elbatrawy
相关产品推荐
相关产品推荐

