Подключение службы 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
Другие вопросы по тегам