Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе содержатся сведения об ошибках, которые могут возникать при попытке установить подключение к центру ASP.NET Core SignalR .
Код ответа 404
WebSocket connection to 'wss://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 404
Общие причины (все конфигурации):
- Убедитесь, что клиент подключается к правильной конечной точке. Например, сервер размещается на
http://127.0.0.1:5000/hub/myHubсервере, и клиент пытается подключиться кhttp://127.0.0.1:5000/myHub.
При использовании потока согласования по умолчанию (skipNegotiation = false):
При использовании нескольких серверов без липких сеансов подключение может начинаться на одном сервере, а затем переключаться на другой сервер. Другой сервер не знает о предыдущем подключении.
Если подключение использует идентификатор и занимает слишком много времени, чтобы отправить запрос на сервер после завершения согласования, сервер:
- Удаляет идентификатор.
- Возвращает код ошибки 404.
При использовании WebSockets с skipNegotiation = true:
- Так как согласование пропущено и идентификатор подключения не получен из
/negotiate, сценарии "липкого" сеанса и времени ожидания идентификатора подключения не применяются. 404 в этом случае обычно означает, что URL-адрес точки доступа WebSocket неверный или хаб не сопоставлен на сервере.
Код ответа 400 или 503
Для указанной ниже ошибки:
WebSocket connection to 'wss://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 400
Error: Failed to start the connection: Error: There was an error with the transport.
Эта ошибка обычно вызвана клиентом, использующим только транспорт WebSockets, но протокол WebSocket не включен на сервере.
Код ответа 307
При использовании WebSockets и skipNegotiation = true
WebSocket connection to 'ws://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 307
Эта ошибка также может произойти во время запроса на согласование.
Распространенные причины:
- Приложение настроено для принудительного применения HTTPS путем вызова
UseHttpsRedirectionвStartup, или принудительного выполнения HTTPS с помощью правила перезаписи URL-адресов.
Возможное решение:
- Измените URL-адрес на стороне клиента с "http" на "https".
.withUrl("https://xxx/HubName")
Код ответа 405
Код состояния HTTP 405 — метод не разрешен
- Приложение не включает CORS
Код ответа 0
Код состояния HTTP 0— обычно проблема CORS , код состояния не указан
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:5000/default/negotiate?negotiateVersion=1. (Reason: CORS header 'Access-Control-Allow-Origin' missing).
- Добавление ожидаемых источников в
.WithOrigins(...)
Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:5000/default/negotiate?negotiateVersion=1. (Reason: expected 'true' in CORS header 'Access-Control-Allow-Credentials').
- Добавьте
.AllowCredentials()в политику CORS. Невозможно использовать.AllowAnyOrigin()или.WithOrigins("*")с этой опцией
Код ответа 413
Код состояния HTTP 413 — полезные данные слишком большие
Это часто вызвано наличием токена доступа, размер которого более 4 кб.
- При использовании службы Azure SignalR уменьшите размер токена, настроив утверждения, которые отправляются через службу.
.AddAzureSignalR(options =>
{
options.ClaimsProvider = context => context.User.Claims;
});
Временные сбои сети
Временные сбои сети могут прервать SignalR подключение. Сервер может интерпретировать закрытое подключение как корректное отключение клиента. Чтобы получить дополнительные сведения о том, почему в этих случаях клиент отключился, соберите журналы с клиента и сервера.
Дополнительные ресурсы
ASP.NET Core