ASP.. NET Framework 4.6.2 SignalR和Redis背板未连接



我们有一个ASP。最近升级到。NET 4.6.2的。NET Forms应用程序。我们使用的是StackExchange.Redis.StrongNameMicrosoft.AspNet.SignalR但最近转移到StackExchange。复述,. 在。net 4.6.2升级之前,所有的工作都是与Redis一起工作的,但自从这个变化之后,Redis似乎没有建立连接。

我们在ARR场后面设置了两个节点,运行相同的应用程序代码。

我们的Startup.cs文件

using Microsoft.AspNet.SignalR;
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(MySampleProject.SignalR.Startup))]
namespace MySampleProject.SignalR
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
GlobalHost.DependencyResolver.UseStackExchangeRedis(RedisIP, 6379, RedisPassword, "MySampleProject");
app.MapSignalR("/signalr", new HubConfiguration
{
EnableJavaScriptProxies = true,
EnableDetailedErrors = true,
EnableJSONP = true
});
}
}
}
在我们的Startup.cs文件中唯一改变的是使用UseStackExchangeRedisUseRedisStackExchange.Redis.StrongName

包。我们已经在CentOS 7上安装了Redis 6.0.10。

如果我们恢复到使用StackExchange.Redis.StrongName一切又正常了。

如果我们注释掉

GlobalHost.DependencyResolver.UseStackExchangeRedis(RedisIP, 6379, RedisPassword, "MySampleProject");

SignalR工作,但消息(显然)只能在同一服务器上传递。

我们按照https://learn.microsoft.com/en-us/aspnet/signalr/overview/performance/scaleout-with-redis上的说明操作。

还有其他需要更改的配置吗?

我发现另一个帖子遇到了类似的问题:Signalr使用Redis背板不传播消息

解决方案是在Signalr中启用跟踪:https://learn.microsoft.com/en-us/aspnet/signalr/overview/testing-and-debugging/enabling-signalr-tracing

发现连接Redis - System错误。InvalidOperationException: system . io . pipes的程序集无法加载">

将以下内容添加到Web.config

<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.1" />
</dependentAssembly>

它解决了这个问题。

最新更新