Устранение ошибок подключения
В этом разделе содержатся сведения об ошибках, которые могут возникать при попытке установить подключение к центру ASP.NET Core SignalR .
Код ответа 404
При использовании WebSockets и skipNegotiation = true
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
.Если подключение использует идентификатор и занимает слишком много времени для отправки запроса на сервер после согласования, сервер:
- Удаляет идентификатор.
- Возвращает значение 404.
Код ответа 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