无法使用ASP.NET会话状态提供程序连接到Redis服务器

我已经尝试使用Redis替换ASP.NET Session已有一段时间了。Microsoft

ASP.NET会话状态提供程序用于Redis的多个小时一直没有结果。

我们为Redis提供了本地Sentinel配置。最初,我认为这是不可行的,因为提供程序不支持Sentinels。我将连接字符串切换为使用主服务器,希望至少能够建立连接。依然没有。

我已经为此提供程序尝试了多种配置,并连续收到“无可用请求连接”或“其他信息:无法连接到Redis服务器;要创建断开的多路复用器,请禁用AbortOnConnectFail。UnableToResolvePhysicalConnection

on Ping。”

这是我尝试过的一些配置:

尝试1:

<connectionStrings>

<add name="RedisConnection" connectionString="1.2.3.4:5,abortConnect=false,ssl=true,password=XXXXXX,ConnectTimeout=10000"/>

</connectionStrings>

<sessionState mode="Custom" customProvider="MySessionStateStore">

<providers>

<add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" connectionString="RedisConnection" />

</providers>

</sessionState>

尝试2:

<sessionState mode="Custom" customProvider="MySessionStateStore">

<providers>

<add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="1.2.3.4" port="5" accessKey="XXXXXXX" />

</providers>

</sessionState>

尝试3:

<sessionState mode="Custom" customProvider="MySessionStateStore">

<providers>

<add name="MySessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="1.2.3.4:5" accessKey="XXXXXXX" />

</providers>

</sessionState>

我发现有关此提供程序的文档很少,而故障排除一直是一个挑战。与Microsoft提供程序相比,我遇到了第三方提供程序并决定尝试使用它。

使用以下配置,我能够成功连接Harbour.RedisSessionStateStore:

<sessionState mode="Custom" customProvider="RedisSessionStateProvider">

<providers>

<clear />

<add name="RedisSessionStateProvider" type="Harbour.RedisSessionStateStore.RedisSessionStateStoreProvider" host="PASSWORD@1.2.3.4:5" clientType="pooled" />

</providers>

</sessionState>

考虑到这一点,Microsoft提供程序的连接字符串的正确格式是什么?对于我来说,从第一方图书馆获得内部支持会更加容易,而在这一点上,让这项工作取得成功将是道义上的胜利。

另外,如果有人知道我如何配置它以击中Sentinel并确定要连接的主实例,我将欢迎发表博客文章或就该主题进行任何形式的知识共享。

谢谢!

回答:

我可以给你一个工作配置的例子,我们在生产中就已经有了它,没有哨兵,但是直接交给了主人:

<system.web>

<sessionState mode="Custom" customProvider="Custom_RedisSessionStateStore">

<providers>

<add name="Custom_RedisSessionStateStore" type="Microsoft.Web.Redis.RedisSessionStateProvider" host="your_host_name_goes_here" accessKey="" port="6379" ssl="false" operationTimeoutInMilliseconds="5000" />

</providers>

</sessionState>

</system.web>

以上是 无法使用ASP.NET会话状态提供程序连接到Redis服务器 的全部内容, 来源链接: utcz.com/qa/404909.html

回到顶部