Ошибка подтверждения соединения при использовании AspNetCore.SignalR в ABP под IIS

Моя среда

  • .NetCore SDk - 2.1.300
  • Microsoft.AspNetCore.SignalR - 1.0.0
  • IIS - версия 10.0.12393.0 в Windows Server 2016

Пример кода для AspNetCore.SignalR

  • Я следую инструкциям по ссылке https://docs.microsoft.com/en-us/aspnet/core/signalr/get-started?view=aspnetcore-2.1&tabs=visual-studio, чтобы заполнить образец кода чата AspNetCore.SignalR.
  • Я могу успешно запустить его в Visual Studio.
  • После этого я публикую его на своем сервере (оконный сервер 2016, IIS имеет функцию веб-сокета), а также работает отлично. Это означает, что моя серверная среда хорошо поддерживает AspNetCore.SignalR.

Abp для AspNetCore.SignalR

  • Я загружаю код шаблона ABP с веб-сайта ABP
  • Обновите SDK ядра .net до .net core 2.1
  • Обновите пакеты nuget
  • Выполните описанные выше шаги, чтобы добавить в проект образец кода чата AspNetCore.SignalR.
  • Успешно запустить его в визуальной студии

Проблема в том, что когда я публикую его на сервере (так же, как и мой сервер выше) и запускаю, он выдает ошибку - AspNetCore.SignalR.HubConnectionContext - Failed connection handshake.

Я исследовал это, но не нашел решения. не могли бы вы помочь разобраться, в чем проблема?

Я поместил свой проект в github: https://github.com/lcyhjx/AbpExample, вы можете вытащить и запустить его (Просто запустите AbpExample.Web.Host). Он отлично работает в Visual Studio, но не работает в IIS.

Детали ошибки:

  • Информация: Нормализация '/ chatHub' в 'http: // локальный: 6011 / chatHub'.
  • Информация: WebSocket подключен к ws: // localhost: 6011 / chatHub? Id = 2zix_nPHODwLEv2p_4VCAw '
  • Ошибка: соединение прервано с ошибкой "Ошибка: сервер возвратил ошибку подтверждения: непредвиденная ошибка произошла во время подтверждения соединения.".

Ошибка подтверждения соединения при использовании AspNetCore.SignalR в ABP под IIS

какую версию Microsoft.AspNetCore.SignalR вы используете?

vivek nuna 31.05.2018 14:50

Поддерживает ли ваш веб-сервер WebSockets? Попробуйте отключить веб-сокеты, чтобы понять, проблема ли в этом stackoverflow.com/questions/9994776/…

Alper Ebicoglu 31.05.2018 15:04

Это также может быть проблема с брандмауэром

vivek nuna 31.05.2018 15:22

версия Microsoft.AspNetCore.SignalR - 1.0.0

Lakin Lu 01.06.2018 01:57

да, мой сервер поддерживает WebSockets, вы можете увидеть мой пример кода для AspNetCore.SignalR отлично работает на моем сервере

Lakin Lu 01.06.2018 01:58

Привет, vivek nuna, мой пример кода чата для AspNetCore.SignalR отлично работает на моем сервере, возможно, это не проблема брандмауэра.

Lakin Lu 01.06.2018 02:01

В моем случае приложение вылетало, когда мобильный телефон работал на 4G (Wi-Fi был в порядке), а я использовал только HTTP. После перехода на HTTPS все снова стало нормально.

Mariusz 18.04.2020 09:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
8
7
6 946
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Я решил проблему. Это проблема кода, в моем коде я установил

HandshakeTimeout = TimeSpan.MaxValue;

Если я прокомментирую приведенный выше код, все будет нормально работать как в VS, так и в IIS.

Но я до сих пор не понимаю, почему я установил HandshakeTimeout = TimeSpan.MaxValue, он отлично работает в VS, но не в IIS.

Lakin Lu 01.06.2018 14:09

Вместо этого отредактируйте свой вопрос.

aaron 03.06.2018 04:48

Здесь то же самое, но немного по-другому: я запустил сервер в Rider, и все заработало. Я поместил его в другой каталог, и у меня есть ошибки рукопожатия. Убрав тайм-аут рукопожатия, он работает везде.

Другие вопросы по теме