Résoudre les erreurs de connexion
Cette section fournit de l’aide sur les erreurs qui peuvent se produire lors de la tentative de connexion à un hub ASP.NET CoreSignalR.
Lors de l’utilisation de WebSockets et skipNegotiation = true
WebSocket connection to 'wss://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 404
Lorsque vous utilisez plusieurs serveurs sans sessions collantes, la connexion peut démarrer sur un serveur, puis basculer vers un autre serveur. L’autre serveur ignore l’existence de la connexion précédente.
Vérifiez que le client se connecte au bon point de terminaison. Par exemple, le serveur est hébergé sur
http://127.0.0.1:5000/hub/myHub
et le client tente de se connecter àhttp://127.0.0.1:5000/myHub
.Si la connexion utilise l’ID et prend trop de temps pour envoyer une requête au serveur après la négociation, le serveur :
- Supprime l’ID.
- Renvoie un code 404.
Pour l’erreur suivante :
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.
Cette erreur est généralement causée par un client qui utilise uniquement le transport WebSockets alors que le protocole WebSocket n’est pas activé sur le serveur.
Lors de l’utilisation de WebSockets et skipNegotiation = true
WebSocket connection to 'ws://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 307
Cette erreur peut également se produire pendant la requête de négociation.
Cause fréquente :
- L’application est configurée pour appliquer un protocole HTTPS en appelant
UseHttpsRedirection
dansStartup
, ou applique HTTPS via une règle de réécriture d’URL.
Solution possible :
- Remplacez l’URL côté client de « http » par « https ».
.withUrl("https://xxx/HubName")
Code d’état http 405 - Méthode non autorisée
- CORS n’est pas activé pour l’application
Code d’état http 0 - Généralement un problème CORS, aucun code d’état n’est donné
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).
- Ajoutez les origines attendues à
.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').
- Ajoutez
.AllowCredentials()
à votre stratégie CORS. Impossible d’utiliser.AllowAnyOrigin()
ou.WithOrigins("*")
avec cette option
Code d’état http 413 - Charge utile trop volumineuse
Cela est souvent dû à un jeton d’accès supérieur à 4 000.
- Si vous utilisez le service Azure SignalR, réduisez la taille des jetons en personnalisant les revendications envoyées via le service avec :
.AddAzureSignalR(options =>
{
options.ClaimsProvider = context => context.User.Claims;
});
Les défaillances réseau temporaires peuvent fermer la connexion SignalR. Le serveur peut interpréter la fermeture de la connexion comme une déconnexion progressive du client. Pour obtenir plus d’informations sur la raison pour laquelle un client s’est déconnecté dans ces cas collecter les journaux du client et du serveur.
Commentaires sur ASP.NET Core
ASP.NET Core est un projet open source. Sélectionnez un lien pour fournir des commentaires :