使用 Redis 背板的 Signalr 不传播消息

Signalr using Redis backplane not propagating message

我有一个 .net 4.5 MVC 应用程序,我最近将其移至 AWS,因此我们需要为我们的 Signalr 实现添加一个背板。我已按照 https://docs.microsoft.com/en-us/aspnet/signalr/overview/performance/scaleout-with-redis 中列出的步骤进行操作。我已经安装了 nuget 包,我当前的配置如下所示:

[assembly: OwinStartup(typeof(SignalrBootstrapper))]
namespace app
{
    public class SignalrBootstrapper
    {
        public void Configuration(IAppBuilder app)
        {
            var scaleoutConfig = new RedisScaleoutConfiguration(ConnectionStrings.Redis, "appSignalrBackplane");
            GlobalHost.DependencyResolver.UseStackExchangeRedis(scaleoutConfig);

            // Any connection or hub wire up and configuration should go here
            app.MapSignalR();
        }
    }
}

但是,它似乎不起作用。根本不再发送推送通知,我尝试使用 redis-cli 手动订阅频道,但没有发布任何内容。没有错误,我尝试手动将连接详细信息输入 UseStackExhangeRedis 函数,而不是像演示链接中那样使用 RedisScaleoutConfiguration,但它没有帮助。

最后,我找到了一种在 Signalr 中启用跟踪的方法: https://docs.microsoft.com/en-us/aspnet/signalr/overview/testing-and-debugging/enabling-signalr-tracing

使用跟踪,我发现加载 dll Error connecting to Redis - System.InvalidOperationException: The assembly for System.Numerics.Vectors could not be loaded 时出错,所以我添加了一个指向 web.config 的重定向并解决了问题

<dependentAssembly>
    <assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>