Dela via


Felsöka anslutningsfel

Det här avsnittet innehåller hjälp med fel som kan uppstå när du försöker upprätta en anslutning till en ASP.NET Core-hubb SignalR .

Svarskod 404

När du använder WebSockets och skipNegotiation = true

WebSocket connection to 'wss://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 404
  • När du använder flera servrar utan stickiga sessioner kan anslutningen starta på en server och sedan växla till en annan server. Den andra servern känner inte till den tidigare anslutningen.

  • Kontrollera att klienten ansluter till rätt slutpunkt. Servern finns till exempel på http://127.0.0.1:5000/hub/myHub och klienten försöker ansluta till http://127.0.0.1:5000/myHub.

  • Om anslutningen använder ID:t och det tar för lång tid att skicka en begäran till servern efter förhandlingarna, servern:

    • Tar bort ID:t.
    • Returnerar en 404.

Svarskod 400 eller 503

För följande fel:

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.

Det här felet orsakas vanligtvis av att en klient endast använder WebSockets-transporten, men WebSocket-protokollet är inte aktiverat på servern.

Svarskod 307

När du använder WebSockets och skipNegotiation = true

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

Det här felet kan också inträffa under förhandlingsbegäran.

Vanlig orsak:

  • Appen är konfigurerad för att framtvinga HTTPS genom att anropa UseHttpsRedirection i Startupeller framtvinga HTTPS via url-omskrivningsregel.

Möjlig lösning:

  • Ändra URL:en på klientsidan från "http" till "https". .withUrl("https://xxx/HubName")

Svarskod 405

Http-statuskod 405 – Metoden tillåts inte

  • Appen har inte CORS aktiverat

Svarskod 0

Http-statuskod 0 – Vanligtvis ett CORS-problem ges ingen statuskod

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).
  • Lägg till det förväntade ursprunget i .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').
  • Lägg till .AllowCredentials() till din CORS-princip. Det går inte att använda .AllowAnyOrigin() eller .WithOrigins("*") med det här alternativet

Svarskod 413

Http-statuskod 413 – Nyttolasten är för stor

Detta orsakas ofta av att ha en åtkomsttoken som är över 4k.

  • Om du använder Azure-tjänsten SignalR minskar du tokenstorleken genom att anpassa anspråken som skickas via tjänsten med:
.AddAzureSignalR(options =>
{
    options.ClaimsProvider = context => context.User.Claims;
});

Tillfälliga nätverksfel

Tillfälliga nätverksfel kan stänga SignalR anslutningen. Servern kan tolka den stängda anslutningen som en graciös klient frånkoppling. Om du vill få mer information om varför en klient är frånkopplad i sådana fall samlar du in loggar från klienten och servern.

Ytterligare resurser