我从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(自行托管)时,一切运行良好。
任何帮助将不胜感激。
答案 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;
如果您是在本地调试服务器端,还可以取消选中“ Just My Code”(Just我的代码)并在任何CLR异常抛出时中断:
System.Security.Authentication.AuthenticationException:“对SSPI的调用失败,请参阅内部异常。 -(内部)“不支持所请求的功能”
System.ObjectDisposedException:'安全句柄已关闭'
System.Net.WebException:“请求已中止:无法创建SSL / TLS安全通道。”
System.Net.WebSockets.WebSocketException:'无法连接到远程服务器' -(内部)WebException:请求被中止:无法创建SSL / TLS安全通道。