Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieser Abschnitt enthält Hilfe zu Fehlern, die beim Herstellen einer Verbindung mit einem ASP.NET Core SignalR Hub auftreten können.
Antwortcode 404
Bei Verwendung von WebSockets und skipNegotiation = true
WebSocket connection to 'wss://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 404
Wenn Sie mehrere Server ohne Sticky Sessions verwenden, kann die Verbindung auf einem Server beginnen und dann zu einem anderen Server wechseln. Der andere Server kennt die vorherige Verbindung nicht.
Stellen Sie sicher, dass der Client eine Verbindung mit dem richtigen Endpunkt herstellt. Der Server wird zum Beispiel bei
http://127.0.0.1:5000/hub/myHub
gehostet und der Client versucht, eine Verbindung beihttp://127.0.0.1:5000/myHub
herzustellen.Wenn die Verbindung die ID verwendet und es nach dem Aushandeln zu lange dauert, eine Anforderung an den Server zu senden, reagiert der Server folgendermaßen:
- Löscht die ID.
- Gibt einen HTTP-Fehler 404 zurück.
Antwortcode 400 oder 503
Für den folgenden Fehler:
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.
Dieser Fehler wird in der Regel von einem Client verursacht, der nur den WebSockets-Transport verwendet, aber das WebSocket-Protokoll ist auf dem Server nicht aktiviert.
Antwortcode 307
Bei Verwendung von WebSockets und skipNegotiation = true
WebSocket connection to 'ws://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 307
Dieser Fehler kann auch während der Verhandlungsanfrage auftreten.
Häufige Ursache:
- Die App ist so konfiguriert, dass HTTPS durch Aufrufen von
UseHttpsRedirection
inStartup
oder durch Erzwingen von HTTPS über die URL-Neuschreibregel sichergestellt wird.
Mögliche Lösung:
- Ändern Sie die URL auf der Clientseite von "http" in "https".
.withUrl("https://xxx/HubName")
Antwortcode 405
HTTP-Statuscode 405 – Methode nicht zulässig
- Die App verfügt nicht über CORS aktiviert
Antwortcode 0
HTTP-Statuscode 0 – In der Regel wird ein CORS-Problem ausgegeben, kein Statuscode wird angegeben.
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).
- Fügen Sie die erwarteten Ursprünge zu
.WithOrigins(...)
hinzu
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').
- Fügen Sie
.AllowCredentials()
Ihrer CORS-Richtlinie hinzu..AllowAnyOrigin()
oder.WithOrigins("*")
kann nicht mit dieser Option verwendet werden.
Antwortcode 413
Http-Statuscode 413 – Nutzlast zu groß
Diese wird häufig durch ein Zugriffstoken verursacht, das größer als 4.000 Byte ist.
- Wenn Sie den Azure-Dienst SignalR verwenden, verringern Sie die Tokengröße, indem Sie die Ansprüche anpassen, die über den Dienst gesendet werden:
.AddAzureSignalR(options =>
{
options.ClaimsProvider = context => context.User.Claims;
});
Vorübergehende Netzwerkfehler
Vorübergehende Netzwerkfehler können die SignalR Verbindung schließen. Der Server könnte die geschlossene Verbindung als einen reibungslosen Client-Disconnect interpretieren. Um mehr Informationen darüber zu erhalten, warum ein Client in diesen Fällen getrennt wurde, sammeln Sie Protokolle vom Client und Server.