Aracılığıyla paylaş


Bağlantı hatalarını giderme

Bu bölüm, ASP.NET Core SignalR hub'ına bağlantı kurmaya çalışırken oluşabilecek hatalarla ilgili yardım sağlar.

Yanıt kodu 404

WebSockets kullanırken ve skipNegotiation = true

WebSocket connection to 'wss://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 404
  • Yapışkan oturumlar olmadan birden çok sunucu kullanırken, bağlantı bir sunucudan başlayıp başka bir sunucuya geçebilir. Diğer sunucu önceki bağlantının farkında değil.

  • İstemcinin doğru uç noktaya bağlandığını doğrulayın. Örneğin, sunucu adresinde http://127.0.0.1:5000/hub/myHub barındırılır ve istemci bağlanmaya http://127.0.0.1:5000/myHubçalışır.

  • Bağlantı kimliğini kullanıyorsa ve anlaşmadan sonra sunucuya istek göndermek çok uzun sürüyorsa, sunucu:

    • Kimliği siler.
    • 404 döndürür.

Yanıt kodu 400 veya 503

Aşağıdaki hata için:

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.

Bu hata genellikle yalnızca WebSockets aktarımını kullanan bir istemciden kaynaklanır, ancak WebSocket protokolü sunucuda etkinleştirilmez.

Yanıt kodu 307

WebSockets kullanırken ve skipNegotiation = true

WebSocket connection to 'ws://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 307

Bu hata, anlaşma isteği sırasında da oluşabilir.

Yaygın neden:

  • Uygulama, içinde Startupçağrısı UseHttpsRedirection yaparak HTTPS'yi zorunlu kacak şekilde yapılandırılır veya URL yeniden yazma kuralı aracılığıyla HTTPS'yi zorlar.

Olası çözüm:

  • İstemci tarafındaki URL'yi "http" olan "https" olarak değiştirin. .withUrl("https://xxx/HubName")

Yanıt kodu 405

Http durum kodu 405 - Yönteme İzin Verilmiyor

Yanıt kodu 0

Http durum kodu 0 - Genellikle bir CORS sorunudur, durum kodu verilmez

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).
  • Beklenen çıkış noktalarını ekleme .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').
  • CORS ilkenize ekleyin .AllowCredentials() . Veya bu seçenekle kullanılamaz .AllowAnyOrigin() .WithOrigins("*")

Yanıt kodu 413

Http durum kodu 413 - Yük Çok Büyük

Bunun nedeni genellikle 4k'nın üzerinde bir erişim belirtecinin olmasıdır.

  • Azure SignalR Hizmeti'ni kullanıyorsanız, Hizmet aracılığıyla gönderilen talepleri şu şekilde özelleştirerek belirteç boyutunu küçültün:
.AddAzureSignalR(options =>
{
    options.ClaimsProvider = context => context.User.Claims;
});

Geçici ağ hataları

Geçici ağ hataları bağlantıyı kapatabilir SignalR . Sunucu, kapatılan bağlantıyı düzgün bir istemci bağlantısının kesilmesi olarak yorumlanabilir. Bu gibi durumlarda istemcinin bağlantısının neden kesildiğinden daha fazla bilgi edinmek için istemciden ve sunucudan günlükleri toplayın.

Ek kaynaklar