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 kehttp://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
diStartup
, 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:
ASP.NET Core
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk