Подключение службы 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 (самостоятельно), все работает отлично.
Любая помощь будет принята с благодарностью.
3 ответа
Оказывается, служба 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
Если вы выполняете локальную отладку на стороне сервера, вы можете также снять флажок "Просто мой код" и прервать его, когда выдает любое исключение CLR:
System.Security.Authentication.AuthenticationException: "Сбой вызова SSPI, см. Внутреннее исключение". - (внутренняя) "Запрошенная функция не поддерживается"
System.ObjectDisposedException: "Безопасный дескриптор закрыт"
System.Net.WebException: "Запрос был прерван: не удалось создать безопасный канал SSL/TLS".
System.Net.WebSockets.WebSocketException: "Невозможно подключиться к удаленному серверу" - (внутреннее) WebException: запрос был прерван: не удалось создать безопасный канал SSL/TLS.
У меня недавно была такая же проблема, из-за которой переговоры работали с
map.RunSignalR(...)
но нет
map.RunAzureSignalR(...)
и попробовал принятый ответ здесь без разрешения. Для тех, кто все еще испытывает эту проблему, попробовав принятый ответ, как я, я обнаружил, что нижеприведенное работает для .NET Framework.
4.6.1
проект.
Переход к ссылке переговоров (например,
.../signalr/negotiate?clientProtocol=2.1&connectionData=...&callback=jQuery...&_=...
) в браузере даст
HTTP 500: служба Azure SignalR еще не подключена, повторите попытку позже.
Включив предложения по отладке исключений от user1966061 и GitHub SignalR ( источник), я смог найти следующие исключения, возникающие при вызове регистрации SignalR в
Startup.Configure(...)
:
Microsoft.Azure.SignalR.Common.ServiceConnectionNotActiveException: «Подключение не активно, данные не могут быть отправлены в службу».
LoaderException — метод «get_Features» типа «Microsoft.AspNetCore.Http.Connections.Client.HttpConnection» из сборки «Microsoft.AspNetCore.Http.Connections.Client, версия = 1.0.0.0, культура = нейтральная» не имеет реализации. ":"Microsoft.AspNetCore.Http.Connections.Client.HttpConnection"
Найдя второе из этих исключений и применив немного Google-фу, я нашел эту проблему GitHub, обсуждающую
LoaderException
из
Microsoft.Azure.SignalR.WebSocketConnectionContext
обсуждение этого в результате обновления с до
6.0.0.0
.
Попробовав понизить пакет до
5.0.12.0
, я все еще столкнулся с той же проблемой. Проверив связанную проблему ( [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
Недавно у меня была такая же проблема, и снова принятый ответ мне не помог. Мой проект был приложением .NET 4.8 MVC (поэтому версия TLS не должна быть проблемой), и после обновления пакетов проектов Nuget возникла проблема.
Я знал, что это обновления Nuget сломали мое приложение, но я не хотел просматривать каждое из них, чтобы выяснить, в чем проблема.
Спасибо user5012644 за то, что указал мне правильное направление. Для меня, хотя мне нужно было только понизить следующие три пакета Nuget до версии5.0.17
чтобы решить проблему. Что-либо6.x
с этими пакетами снова вызвала проблему.
- Microsoft.AspNetCore.Connections.Abstractions
- Microsoft.AspNetCore.Http.Connections.Client
- Microsoft.AspNetCore.Http.Connections.Common