Bagikan melalui


Pemecahan masalah koneksi

Bagian ini menyediakan bantuan terkait kesalahan yang dapat terjadi saat mencoba membuat koneksi ke hub ASP.NET Core SignalR .

Kode respons 404

Saat menggunakan WebSocket dan skipNegotiation = true

WebSocket connection to 'wss://xxx/HubName' failed: Error during WebSocket handshake: Unexpected response code: 404
  • Saat menggunakan beberapa server tanpa sesi lengket, koneksi dapat dimulai pada satu server lalu beralih ke server lain. Server lain tidak mengetahui koneksi sebelumnya.

  • Verifikasi bahwa klien tersambung ke titik akhir yang benar. Misalnya, server dihosting di http://127.0.0.1:5000/hub/myHub dan klien mencoba terhubung ke http://127.0.0.1:5000/myHub.

  • Jika koneksi menggunakan ID dan membutuhkan waktu terlalu lama untuk mengirim permintaan ke server setelah negosiasi, server:

    • Menghapus ID.
    • Mengembalikan 404.

Kode respons 400 atau 503

Untuk kesalahan berikut:

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.

Kesalahan ini biasanya disebabkan oleh klien yang hanya menggunakan transportasi WebSocket tetapi protokol WebSocket tidak diaktifkan di server.

Kode respons 307

Saat menggunakan WebSocket dan skipNegotiation = true

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

Kesalahan ini juga dapat terjadi selama permintaan negosiasi.

Penyebab umum:

  • Aplikasi dikonfigurasi untuk memberlakukan HTTPS dengan memanggil UseHttpsRedirection di Startup, atau memberlakukan HTTPS melalui aturan penulisan ulang URL.

Solusi yang mungkin:

  • Ubah URL di sisi klien dari "http" menjadi "https". .withUrl("https://xxx/HubName")

Kode respons 405

Kode status Http 405 - Metode Tidak Diizinkan

  • Aplikasi tidak mengaktifkan CORS

Kode respons 0

Kode status Http 0 - Biasanya masalah CORS , tidak ada kode status yang diberikan

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).
  • Tambahkan asal yang diharapkan ke .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').
  • Tambahkan .AllowCredentials() ke kebijakan CORS Anda. Tidak dapat menggunakan .AllowAnyOrigin() atau .WithOrigins("*") dengan opsi ini

Kode respons 413

Kode status Http 413 - Payload Terlalu Besar

Ini sering disebabkan oleh memiliki token akses yang lebih dari 4k.

  • Jika menggunakan Layanan Azure SignalR , kurangi ukuran token dengan menyesuaikan klaim yang dikirim melalui Layanan dengan:
.AddAzureSignalR(options =>
{
    options.ClaimsProvider = context => context.User.Claims;
});

Kegagalan jaringan sementara

Kegagalan jaringan sementara dapat menutup SignalR koneksi. Server dapat menginterpretasikan koneksi tertutup sebagai pemutusan sambungan klien yang anggun. Untuk mendapatkan informasi selengkapnya tentang mengapa klien terputus dalam kasus tersebut mengumpulkan log dari klien dan server.

Sumber Daya Tambahan: