Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ta sekcja zawiera pomoc dotyczącą błędów, które mogą wystąpić podczas próby nawiązania połączenia z centrum ASP.NET Core SignalR .
Kod odpowiedzi 404
Korzystając z WebSocketów i skipNegotiation = true
WebSocket connection to 'wss://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 404
Podczas korzystania z wielu serwerów bez użycia mechanizmu przypisywania sesji, połączenie może rozpocząć się na jednym serwerze, a następnie zostać przełączone na inny serwer. Drugi serwer nie zna poprzedniego połączenia.
Sprawdź, czy klient nawiązuje połączenie z poprawnym punktem końcowym. Na przykład serwer jest hostowany w witrynie
http://127.0.0.1:5000/hub/myHub, a klient próbuje nawiązać połączenie z usługąhttp://127.0.0.1:5000/myHub.Jeśli połączenie używa identyfikatora i wysłanie żądania do serwera po negocjacji trwa zbyt długo, serwer:
- Usuwa identyfikator.
- Zwraca kod 404.
Kod odpowiedzi 400 lub 503
W przypadku następującego błędu:
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.
Ten błąd jest zwykle spowodowany przez klienta używającego tylko transportu protokołu WebSocket, ale protokół WebSocket nie jest włączony na serwerze.
Kod odpowiedzi 307
Korzystając z WebSocketów i skipNegotiation = true
WebSocket connection to 'ws://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 307
Ten błąd może również wystąpić podczas żądania negocjowania.
Typowa przyczyna:
- Aplikacja jest skonfigurowana do wymuszania protokołu HTTPS przez wywołanie
UseHttpsRedirectionwStartup, lub wymusza HTTPS za pośrednictwem reguły przepisywania adresów URL.
Możliwe rozwiązanie:
- Zmień adres URL po stronie klienta z "http" na "https".
.withUrl("https://xxx/HubName")
Kod odpowiedzi 405
Kod stanu HTTP 405 — Niedozwolona metoda
- Aplikacja nie ma włączonego mechanizmu CORS
Kod odpowiedzi 0
Kod stanu HTTP 0 — zwykle problem z mechanizmem CORS , nie podano żadnego kodu stanu
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).
- Dodaj oczekiwane źródła do
.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').
- Dodaj
.AllowCredentials()do zasad MECHANIZMU CORS. Nie można użyć.AllowAnyOrigin()lub.WithOrigins("*")z tą opcją
Kod odpowiedzi 413
Kod stanu HTTP 413 — Za duży ładunek
Jest to często spowodowane posiadaniem tokenu dostępu powyżej 4k.
- W przypadku korzystania z usługi Azure SignalR, zmniejsz rozmiar tokenu, dostosowując roszczenia wysyłane za pośrednictwem usługi.
.AddAzureSignalR(options =>
{
options.ClaimsProvider = context => context.User.Claims;
});
Przejściowe błędy sieci
Przejściowe błędy sieci mogą zamknąć SignalR połączenie. Serwer może interpretować zamknięte połączenie jako bezproblemowe rozłączenie klienta. Aby uzyskać więcej informacji na temat tego, dlaczego klient został rozłączony w takich przypadkach, zbierz dzienniki z klienta i serwera.
Dodatkowe zasoby
ASP.NET Core