Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе содержатся сведения об ошибках, которые могут возникать при попытке установить подключение к центру 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