Azure SignalR 服务连接未激活

Azure SignalR Service Connection is not active

我从 2.4.0 更新了我们的信号器包并添加了 RunAzureSignalR 而不是 RunSignalR。在 de 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(自托管)时,一切都很好运行。

如有任何帮助,我们将不胜感激。

事实证明,出于安全考虑,Azure 服务仅支持 TLS1.2。 请将以下代码添加到您的 Startup:

ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

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

"No server available" 表示您的应用服务器无法连接到 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" 并在任何 CLR 异常抛出时中断:

System.Security.Authentication.AuthenticationException: "A call to SSPI failed, see inner exception." -(内)"The function requested is not supported"

System.ObjectDisposedException: 'Safe handle has been closed'

System.Net.WebException: 'The request was aborted: Could not create SSL/TLS secure channel.'

System.Net.WebSockets.WebSocketException: 'Unable to connect to the remote server' -(内部)WebException:请求被中止:无法创建 SSL/TLS 安全通道。

我最近遇到了同样的问题,即谈判适用于 map.RunSignalR(...) 而不是 map.RunAzureSignalR(...) 并尝试了 这里没有解决。对于像我一样尝试接受的答案后仍然遇到此问题的任何人,我发现以下内容适用于 .NET Framework 4.6.1 项目。

在浏览器中导航至协商 link(例如 .../signalr/negotiate?clientProtocol=2.1&connectionData=...&callback=jQuery...&_=...)将显示

HTTP 500: Azure SignalR Service is not connected yet, please try again later

启用 @Youp Hulsebos and the SignalR GitHub (source) 中的异常调试建议后,我发现 Startup.Configure(...) 中的 SignalR 注册调用抛出了以下异常:

Microsoft.Azure.SignalR.Common.ServiceConnectionNotActiveException: 'The connection is not active, data cannot be sent to the service.'

LoaderException - Method 'get_Features' in type 'Microsoft.AspNetCore.Http.Connections.Client.HttpConnection' from assembly 'Microsoft.AspNetCore.Http.Connections.Client, Version=1.0.0.0, Culture=neutral' does not have an implementation.":"Microsoft.AspNetCore.Http.Connections.Client.HttpConnection"

找到第二个例外并应用一些 Google-fu,我发现 this GitHub issue discussing the LoaderException from Microsoft.Azure.SignalR.WebSocketConnectionContext discussing this as Microsoft.AspNetCore.Http.Connections.Client5.0.12.0 升级到 6.0.0.0 的结果。

尝试将软件包降级到 5.0.12.0,我仍然遇到同样的问题。检查了 linked 问题 ([dotnet/aspnetcore#38699]) 后,我将以下软件包降级为 5.0.11.0 并解决了问题:

  • Microsoft.AspNetCore.Connections.Abstractions
  • Microsoft.AspNetCore.Http.Connections.Client
  • Microsoft.AspNetCore.Http.Connections.Common
  • Microsoft.AspNetCore.Http.Features