Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Esta seção fornece ajuda com erros que podem ocorrer ao tentar estabelecer uma conexão com um hub ASP.NET Core SignalR .
Código de resposta 404
Ao usar WebSockets e skipNegotiation = true
WebSocket connection to 'wss://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 404
Ao usar vários servidores sem sessões adesivas, a conexão pode começar em um servidor e, em seguida, alternar para outro servidor. O outro servidor não está ciente da conexão anterior.
Verifique se o cliente está se conectando ao endpoint correto. Por exemplo, o servidor está hospedado em
http://127.0.0.1:5000/hub/myHub
e o cliente está tentando se conectar aohttp://127.0.0.1:5000/myHub
.Se a conexão utilizar o ID e demorar demasiado para enviar uma solicitação ao servidor após a negociação, o servidor:
- Exclui o ID.
- Devolve um erro 404.
Código de resposta 400 ou 503
Para o seguinte erro:
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.
Esse erro geralmente é causado por um cliente usando apenas o transporte WebSockets, mas o protocolo WebSocket não está habilitado no servidor.
Código de resposta 307
Ao usar WebSockets e skipNegotiation = true
WebSocket connection to 'ws://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 307
Esse erro também pode acontecer durante a solicitação de negociação.
Causa comum:
- O aplicativo está configurado para impor HTTPS chamando
UseHttpsRedirection
emStartup
, ou impõe HTTPS através da regra de reescrita de URL.
Solução possível:
- Altere o URL no lado do cliente de "http" para "https".
.withUrl("https://xxx/HubName")
Código de resposta 405
Código de status Http 405 - Método não permitido
- O aplicativo não tem o CORS habilitado
Código de resposta 0
Código de estado Http 0 - Geralmente um problema CORS e nenhum código de estado é fornecido
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).
- Insira as origens esperadas em
.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').
- Adicione
.AllowCredentials()
à sua política de CORS. Não é possível usar.AllowAnyOrigin()
ou.WithOrigins("*")
com esta opção
Código de resposta 413
Código de status Http 413 - Carga muito grande
Isso geralmente é causado por ter um token de acesso de tamanho superior a 4k.
- Se estiver usando o Serviço do Azure SignalR , reduza o tamanho do token personalizando as declarações que estão sendo enviadas por meio do Serviço com:
.AddAzureSignalR(options =>
{
options.ClaimsProvider = context => context.User.Claims;
});
Falhas de rede transitórias
Falhas de rede transitórias podem fechar a SignalR conexão. O servidor pode interpretar a conexão fechada como uma desconexão de cliente normal. Para obter mais informações sobre por que um cliente se desconectou nesses casos, reúna logs do cliente e do servidor.