Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta sección se proporciona ayuda con errores que pueden ocurrir al intentar establecer una conexión a un hub de ASP.NET Core SignalR.
Código de respuesta 404
Al usar WebSockets y skipNegotiation = true
WebSocket connection to 'wss://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 404
Cuando se usan varios servidores sin sesiones permanentes, la conexión se puede iniciar en un servidor y, a continuación, cambiar a otro servidor. El otro servidor no es consciente de la conexión anterior.
Compruebe que el cliente se está conectando al punto de conexión correcto. Por ejemplo, el servidor se hospeda en
http://127.0.0.1:5000/hub/myHub
y el cliente intenta conectarse ahttp://127.0.0.1:5000/myHub
.Si la conexión usa el identificador y tarda demasiado tiempo en enviar una solicitud al servidor después de la negociación, el servidor:
- Elimina el identificador.
- Devuelve un error 404.
Código de respuesta 400 o 503
Para el siguiente error:
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.
Este error suele deberse a que un cliente usa solo el transporte de WebSockets, pero el protocolo WebSocket no está habilitado en el servidor.
Código de respuesta 307
Al usar WebSockets y skipNegotiation = true
WebSocket connection to 'ws://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 307
Este error también puede producirse durante la solicitud de negociación.
Causa común:
- La aplicación está configurada para aplicar HTTPS llamando a
UseHttpsRedirection
enStartup
, o mediante una regla de reescritura de URL para exigir HTTPS.
Solución posible:
- Cambie la dirección URL del lado cliente de "http" a "https".
.withUrl("https://xxx/HubName")
Código de respuesta 405
Código de estado HTTP 405: método no permitido
- La aplicación no tiene CORS habilitado
Código de respuesta 0
Código de estado HTTP 0: normalmente un problema de CORS , no se da ningún código de estado
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).
- Añade los orígenes esperados a
.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').
- Agregue
.AllowCredentials()
a la política de CORS. No se puede usar.AllowAnyOrigin()
o.WithOrigins("*")
con esta opción
Código de respuesta 413
Código de estado HTTP 413: carga demasiado grande
Esto suele deberse a tener un token de acceso que supera los 4k caracteres.
- Si usa el Servicio de Azure SignalR, reduzca el tamaño del token personalizando las reivindicaciones que se envían a través del Servicio con:
.AddAzureSignalR(options =>
{
options.ClaimsProvider = context => context.User.Claims;
});
Errores de red transitorios
Los errores de red transitorios pueden cerrar la SignalR conexión. El servidor puede interpretar la conexión cerrada como una desconexión de cliente normal. Para obtener más información sobre por qué un cliente desconectado en esos casos recopila registros del cliente y el servidor.