Řešení chyb připojení

Tato část obsahuje nápovědu k chybám, ke kterým může dojít při pokusu o navázání připojení k centru ASP.NET Core SignalR .

Kód odpovědi 404

Při použití webSocket a skipNegotiation = true

WebSocket connection to 'wss://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 404
  • Při použití více serverů bez rychlých relací se připojení může spustit na jednom serveru a pak přepnout na jiný server. Druhý server o předchozím připojení neví.

  • Ověřte, že se klient připojuje ke správnému koncovému bodu. Server je například hostovaný http://127.0.0.1:5000/hub/myHub a klient se pokouší připojit k http://127.0.0.1:5000/myHub.

  • Pokud připojení používá ID a odeslání požadavku na server po vyjednání trvá příliš dlouho, server:

    • Odstraní ID.
    • Vrátí hodnotu 404.

Kód odpovědi 400 nebo 503

Pro následující chybu:

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.

Příčinou této chyby je obvykle klient, který používá pouze přenos WebSockets, ale protokol WebSocket není na serveru povolený.

Kód odpovědi 307

Při použití webSocket a skipNegotiation = true

WebSocket connection to 'ws://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 307

K této chybě může dojít také během žádosti o vyjednávání.

Běžná příčina:

  • Aplikace je nakonfigurovaná tak, aby vynucovala HTTPS voláním UseHttpsRedirectionStartupnebo vynucuje HTTPS prostřednictvím pravidla přepsání adresy URL.

Možné řešení:

  • Změňte adresu URL na straně klienta z http na https. .withUrl("https://xxx/HubName")

Kód odpovědi 405

Stavový kód HTTP 405 – Metoda není povolená

Kód odpovědi 0

Stavový kód HTTP 0 – obvykle problém s CORS , není zadán žádný stavový kód.

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).
  • Přidání očekávaných zdrojů 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').
  • Přidejte .AllowCredentials() do zásad CORS. Tuto možnost nelze použít .AllowAnyOrigin() nebo .WithOrigins("*") s touto možností

Kód odpovědi 413

Stavový kód HTTP 413 – datová část je příliš velká

Příčinou je často přístupový token, který je více než 4k.

  • Pokud používáte službu Azure SignalR , zmenšete velikost tokenu přizpůsobením deklarací identity odesílaných prostřednictvím služby:
.AddAzureSignalR(options =>
{
    options.ClaimsProvider = context => context.User.Claims;
});

Přechodné selhání sítě

Přechodné selhání sítě může připojení zavřít SignalR . Server může uzavřené připojení interpretovat jako řádné odpojení klienta. Pokud chcete získat další informace o tom, proč se klient v těchto případech odpojil, shromážděte protokoly z klienta a serveru.

Další prostředky