Azure SignalR服务连接未激活

时间:2019-01-04 13:27:44

标签: asp.net-mvc signalr-2 azure-signalr

我从2.4.0版本更新了信号包,并添加了RunAzureSignalR而不是RunSignalR。在Startup.cs

中添加了此代码
app.Map("/signalr", map =>
{
    var hubConfiguration = new HubConfiguration
    {
        EnableDetailedErrors = true
    };

    map.RunAzureSignalR(typeof(Startup).FullName, hubConfiguration, options =>
    {
        options.ConnectionString = AppApiSettings.SignalRServiceConnectionString;
    });
});

但是,当我尝试向集线器发送消息时,出现异常The connection is not active, data cannot be sent to the service.。找不到发生这种情况的任何原因或该服务无法运行的原因。

当我使用RunSignalR(自行托管)时,一切运行良好。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

事实证明,出于安全方面的考虑,Azure服务仅支持TLS1.2。 请在您的启动中添加以下代码:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

此解决方案的提示在github票证上找到:https://github.com/Azure/azure-signalr/issues/279

“没有可用的服务器”表示您的应用服务器无法连接到Azure服务。您可以使用以下命令从应用服务器端启用跟踪,以查看是否抛出任何错误。

GlobalHost.TraceManager.Switch.Level = SourceLevels.Information;

此处的示例:https://github.com/Azure/azure-signalr/blob/dev/samples/AspNet.ChatSample/AspNet.ChatSample.SelfHostServer/Startup.cs#L19

如果您是在本地调试服务器端,还可以取消选中“ Just My Code”(Just我的代码)并在任何CLR异常抛出时中断:

Disable just my code enter image description here System.Security.Authentication.AuthenticationException:“对SSPI的调用失败,请参阅内部异常。 -(内部)“不支持所请求的功能”

System.ObjectDisposedException:'安全句柄已关闭'

System.Net.WebException:“请求已中止:无法创建SSL / TLS安全通道。”

System.Net.WebSockets.WebSocketException:'无法连接到远程服务器' -(内部)WebException:请求被中止:无法创建SSL / TLS安全通道。