Je viens de commencer à travailler avec SignalR. J'ai implémenté la réflexion de données en temps réel sur mon site à l'aide de signalr. J'obtenais l'erreur "Erreur lors de l'établissement de la liaison Web-Socket: Code de réponse inattendu: 400" lors de la tentative de connexion à la prise Web.
L'application est développée avec Asp.net MVC - signalR 2.0.3 et hébergée sur un serveur Windows 2012 - IIS 8
J'ai trouvé une solution de ce lien
Il dit que nous avons besoin que le site Web pointe sur HTTPS (et utilise SSL), puis http pour fonctionner avec Web-socket. Et mon problème résolu aussi. Mon doute est - nous ne pouvons pas résoudre ce problème sans utiliser HTTPS? Chaque site Web n’ayant pas besoin d’être hébergé sur HTTPS (qui requiert SSL).
utilisez cette balise dans votre fichier web.config:
<httpRuntime maxRequestLength="40960" targetFramework="4.5" requestValidationMode="2.0" />
sous <system.web>
tag . Décrivez votre framework cible.L'erreur sera disparue
Si le problème provient des serveurs mandataires présents dans le chemin d'accès client à serveur, vous ne pouvez rien faire d'autre que vous plaindre auprès de votre fournisseur (client et serveur).
Comment HTML5 Web Sockets interagit avec les serveurs proxy
En utilisant une connexion sécurisée, vous vous assurez qu'aucun proxy ne va gâcher votre connexion.
Cette erreur 400 peut également se produire si vous exécutez plusieurs serveurs derrière un équilibreur de charge. Inspectez le corps de la réponse 400 (par exemple, en utilisant Fiddler) et voyez si vous trouvez ceci: The ConnectionId is in the incorrect format
. Si tel est le cas, votre problème peut être que vous n'utilisez pas la même clé d'ordinateur sur chaque serveur d'applications.
Voir cette réponse pour plus de détails sur la solution: https://stackoverflow.com/a/43479474/979202