ASP.NET Framework 4.6.2 SignalR 和 Redis 背板未连接
Posted
技术标签:
【中文标题】ASP.NET Framework 4.6.2 SignalR 和 Redis 背板未连接【英文标题】:ASP.NET Framework 4.6.2 SignalR and Redis backplane not connecting 【发布时间】:2021-04-29 20:51:14 【问题描述】:我们有一个最近升级到 .NET 4.6.2 的 ASP.NET Forms 应用程序。我们将 StackExchange.Redis.StrongName 与 Microsoft.AspNet.SignalR 一起使用,但最近移至 StackExchange.Redis。在 .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 文件中唯一改变的是使用 StackExchange.Redis.StrongName 包中的 UseRedis
中的 UseStackExchangeRedis
。
我们在 CentOS 7 机器上安装了 Redis 6.0.10。
如果我们恢复使用 StackExchange.Redis.StrongName,一切都会恢复正常。
如果我们注释掉
GlobalHost.DependencyResolver.UseStackExchangeRedis(RedisIP, 6379, RedisPassword, "MySampleProject");
SignalR 有效,但消息(显然)仅在同一服务器上传递。
我们按照https://docs.microsoft.com/en-us/aspnet/signalr/overview/performance/scaleout-with-redis 的说明进行操作。
是否需要进行其他配置更改?
【问题讨论】:
【参考方案1】:我发现另一个帖子遇到了类似的问题:Signalr using Redis backplane not propagating message
解决方案是在 Signalr 中启用跟踪:https://docs.microsoft.com/en-us/aspnet/signalr/overview/testing-and-debugging/enabling-signalr-tracing
发现“连接到 Redis 时出错 - System.InvalidOperationException:无法加载 System.IO.Piplines 的程序集”
以下内容已添加到 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>
它解决了这个问题。
【讨论】:
以上是关于ASP.NET Framework 4.6.2 SignalR 和 Redis 背板未连接的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET Core (.NET Core) and ASP.NET Core (.NET Framework)区别
ASP.NET - 当前身份 (Machine\ASPNET) 没有对 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET
类型:.net;问题:ASP.NET路由;结果:ASP.NET 路由 .NET Framework 4
Asp.Net core (Full .Net framework) vs Asp.Net core (.Net Core) 性能
ASP.NET Core 1.0 部署 HTTPS (.NET Framework 4.5.1)
使用 ADFS 的 JWT Bearer 身份验证将 ASP.NET Framework 迁移到 ASP.NET Core 3.1