c# - ASP.NET Framework 4.6.2 SignalR 和 Redis 背板未连接
问题描述
我们有一个最近升级到 .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 文件中唯一改变的是UseStackExchangeRedis
fromUseRedis
与StackExchange.Redis.StrongName包的使用。
我们在 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上的说明进行操作。
是否需要进行任何其他配置更改?
解决方案
我发现另一篇遇到类似问题的帖子: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>
它解决了这个问题。
推荐阅读
- javascript - 我无法在 Visual Studio 2012 的 js.file 中编写 javascript 代码
- javascript - JSPDF .输出图片+txt
- ansible - 是否可以使用动态 host_vars 文件?
- c++ - 尝试编写自定义 allocate_shared 分配器并将其设为 thread_local 时崩溃
- assembly - 为什么使用线程注入注入代码洞穴会使我的目标 win32 EXE 崩溃?
- r - 通过 libcurl 下载 csv 文件,但不通过 curl 方法
- android - Android:如何切换到已经创建的Activity
- delphi - Firedac Firebird 主从场景
- c++ - 由于显示功能的非法间接错误
- javascript - 在从 MySQL 数据库中获取数据之前隐藏 Datatable