Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você 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 do 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 persistentes, a conexão pode iniciar em um servidor e 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 é hospedado em
http://127.0.0.1:5000/hub/myHube o cliente está tentando se conectar ahttp://127.0.0.1:5000/myHub.Se a conexão usar a ID e demorar muito para enviar uma solicitação ao servidor após o processo de negociação, o servidor:
- Exclui o identificador.
- Retorna 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 ocorrer durante a solicitação de negociação.
Causa comum:
- O aplicativo é configurado para impor HTTPS chamando
UseHttpsRedirectionemStartup, ou impondo HTTPS por meio da regra de reescrita de URL.
Possível solução:
- Altere a URL do 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 CORS habilitado
Código de resposta 0
Código de status http 0 – Geralmente um problema de CORS , nenhum código de status é dado
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).
- Adicionar as origens esperadas 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').
- Adicione
.AllowCredentials()à política do CORS. Não é possível usar.AllowAnyOrigin()ou.WithOrigins("*")com essa opção
Código de resposta 413
Código de status http 413 – Carga muito grande
Isso geralmente é causado pelo uso de um token de acesso com mais de 4 mil caracteres.
- Se estiver usando o Serviço do Azure SignalR , reduza o tamanho do token personalizando as declarações 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 normal do cliente. Para obter mais informações sobre por que um cliente desconectado nesses casos coleta logs do cliente e do servidor.