Saya memiliki aplikasi server dan terkadang, ketika klien mencoba untuk terhubung, saya mendapatkan kesalahan berikut:
CATATAN: "tidak bisa mendapatkan streaming dari klien atau login gagal" adalah teks yang ditambahkan oleh saya dalam pernyataan catch
dan garis di mana ia berhenti (sThread: line 96) adalah:
tcpClient = (TcpClient)client;
clientStream = tcpClient.GetStream();
sr = new StreamReader(clientStream);
sw = new StreamWriter(clientStream);
// line 96:
a = sr.ReadLine();
Apa yang mungkin menyebabkan masalah ini? Perhatikan bahwa itu tidak terjadi setiap saat
sumber
Saya menerima kesalahan ini saat memanggil layanan web. Masalah tersebut juga terkait dengan keamanan tingkat transportasi. Saya dapat memanggil layanan web melalui proyek situs web, tetapi ketika menggunakan kembali kode yang sama dalam proyek uji saya akan mendapatkan WebException yang berisi pesan ini. Menambahkan baris berikut sebelum melakukan panggilan menyelesaikan masalah:
Edit
Saya yakin
SecurityProtocol
konfigurasi ini penting selama jabat tangan TLS saat memilih versi protokol.sumber
Skenario kasus khusus saya adalah bahwa layanan aplikasi Azure memiliki versi TLS minimum yang diubah menjadi 1.2
Saya tidak tahu apakah itu default mulai sekarang, tetapi mengubahnya kembali ke 1.0 membuatnya berfungsi.
Anda dapat mengakses pengaturan di dalam "Pengaturan SSL".
sumber
Tidak yakin perbaikan mana di postingan blog ini yang membantu, tetapi salah satu dari mereka menyelesaikan masalah ini untuk saya ...
http://briancaos.wordpress.com/2012/07/06/unable-to-read-data-from-the-transport-connection-the-connection-was-closed/
Trik yang membantu saya adalah berhenti menggunakan WebRequest dan menggunakan HttpWebRequest sebagai gantinya. HttpWebRequest memungkinkan saya untuk bermain dengan 3 pengaturan penting:
dan
http://briancaos.wordpress.com/2012/06/15/an-existing-connection-was-forcible-closed-by-the-remote-host/
sumber
Panggilan ke layanan HTTPS dari salah satu server kami juga memunculkan pengecualian " Tidak dapat membaca data dari koneksi transport: Koneksi yang ada ditutup secara paksa ". Layanan HTTP, bagaimanapun, bekerja dengan baik. Menggunakan Wireshark untuk melihat bahwa itu adalah Kegagalan jabat tangan TLS. Akhirnya cipher suite di server perlu diperbarui.
sumber
Menurut balasan "Hans Vonn".
Menambahkan baris berikut sebelum melakukan panggilan menyelesaikan masalah:
Setelah menambahkan protokol Keamanan dan berfungsi dengan baik tetapi saya harus menambahkan sebelum setiap panggilan API yang tidak sehat. Saya baru saja memutakhirkan .net framework versi setidaknya 4.6 dan bekerja seperti yang diharapkan tidak perlu menambahkan sebelum setiap panggilan API.
sumber
Ini tidak akan membantu untuk masalah sesekali, tetapi mungkin berguna untuk orang lain dengan masalah serupa.
Saya telah mengkloning VM dan memulainya di jaringan lain dengan alamat IP baru tetapi tidak mengubah binding di IIS. Fiddler menunjukkan kepada saya "Tidak dapat membaca data dari koneksi transportasi: Koneksi yang ada ditutup secara paksa oleh host jarak jauh" dan IE memberi tahu saya "Aktifkan TLS 1.0, TLS 1.1, dan TLS 1.2 dalam pengaturan Lanjutan". Mengubah pengikatan ke alamat IP baru menyelesaikannya untuk saya.
sumber
Untuk beberapa alasan, koneksi ke server terputus. Bisa jadi server secara eksplisit menutup koneksi, atau bug pada server menyebabkannya ditutup secara tidak terduga. Atau sesuatu antara klien dan server (sakelar atau router) memutuskan koneksi.
Mungkin kode server yang menyebabkan masalah, dan mungkin tidak. Jika Anda memiliki akses ke kode server, Anda dapat meletakkan beberapa debugging di sana untuk memberi tahu Anda ketika koneksi klien ditutup. Itu mungkin memberi Anda beberapa indikasi tentang kapan dan mengapa koneksi diputus.
Pada klien, Anda harus menulis kode Anda untuk memperhitungkan kemungkinan server gagal kapan saja. Begitulah adanya: koneksi jaringan pada dasarnya tidak dapat diandalkan.
sumber
Ini memecahkan masalah saya. Saya menambahkan baris ini sebelum permintaan dibuat:
Tampaknya ada proxy di jalan server yang tidak mendukung perilaku 100-lanjutkan.
sumber
Saya mendapatkan masalah itu di masa lalu. Saya menggunakan PostgreSQL dan ketika saya menjalankan program saya, terkadang program terhubung dan terkadang muncul kesalahan seperti itu.
Ketika saya bereksperimen dengan kode saya, saya meletakkan kode Koneksi saya di baris pertama di bawah Formulir publik. Berikut ini contohnya:
SEBELUM:
SEKARANG:
Saya kira programnya harus membaca dulu koneksinya sebelum melakukan apa-apa, entahlah, perbaiki saya jika saya salah. Tetapi menurut penelitian saya, ini bukan masalah kode - ini sebenarnya dari mesin itu sendiri.
Selamat Coding!
sumber
Masalah ini terkadang terjadi karena alasan server proxy diterapkan pada server web. Untuk melewati server proxy dengan meletakkan baris ini sebelum memanggil layanan pengiriman.
sumber
Saya menjalankan aplikasi Pihak Ketiga (Fiddler) untuk mencoba dan melihat permintaan yang dikirim. Menutup aplikasi ini memperbaikinya untuk saya
sumber
Kami mengalami masalah yang sangat mirip ketika situs web klien mencoba menyambung ke layanan API Web kami dan mendapatkan pesan yang sama. Ini mulai terjadi secara tiba-tiba ketika tidak ada perubahan kode atau pembaruan Windows di server tempat IIS berjalan.
Dalam kasus kami, ternyata situs web pemanggil menggunakan versi .Net yang hanya mendukung TLS 1.0 dan untuk beberapa alasan server tempat IIS kami berjalan berhenti tampaknya telah berhenti menerima panggilan TLS 1.0. Untuk mendiagnosis bahwa kami harus mengaktifkan TLS secara eksplisit melalui registri di server IIS dan kemudian memulai ulang server tersebut. Ini adalah kunci reg:
Jawaban saya untuk pertanyaan lain di sini memiliki skrip PowerShell yang kami gunakan untuk menambahkan entri:
CATATAN: Mengaktifkan protokol keamanan lama bukanlah ide yang baik, jawaban yang benar dalam kasus kami adalah meminta situs web klien memperbarui kodenya untuk menggunakan TLS 1.2, tetapi entri registri di atas dapat membantu mendiagnosis masalah di tempat pertama.
sumber
Alasan hal ini terjadi pada saya adalah karena saya memiliki ketergantungan rekursif pada penyedia DI saya. Dalam kasus saya, saya memiliki:
Perbaiki adalah hanya menghapus pendaftaran layanan cakupan kedua
sumber
Jika Anda memiliki sertifikat https pada domain, pastikan Anda memiliki https yang mengikat nama domain di IIS. Di IIS -> Pilih domain Anda -> Klik pada Bindings Site Bindings Window terbuka. Tambahkan pengikatan untuk https.
sumber
Memiliki masalah serupa dan mendapatkan kesalahan berikut tergantung pada aplikasi apa yang saya gunakan dan apakah kami melewati firewall / load balancer atau tidak:
dan
Masalahnya ternyata Sertifikat Server SSL tidak terjawab dan tidak diinstal di beberapa server.
sumber
Coba periksa apakah Anda dapat menjalin jabat tangan sejak awal. Saya mengalami masalah ini sebelumnya ketika mengunggah file dan saya hanya menemukan bahwa masalahnya adalah rute yang tidak ada ketika saya menghapus unggahan dan memeriksa apakah itu dapat masuk dengan parameter.
sumber
Pilihan lain adalah memeriksa kode kesalahan yang dihasilkan menggunakan blok coba-tangkap dan pertama-tama menangkap WebException.
Dalam kasus saya, kode kesalahannya adalah "SendFailure" karena masalah sertifikat pada url HTTPS, setelah saya menekan HTTP, itu teratasi.
https://docs.microsoft.com/en-us/dotnet/api/system.net.webexceptionstatus?redirectedfrom=MSDN&view=netframework-4.8
sumber
Bagi saya, itu adalah masalah di mana di IIS mengikat itu memiliki alamat IP dari server web. Saya mengubahnya untuk menggunakan semua IP yang tidak ditetapkan dan aplikasi saya mulai berfungsi.
sumber
Saya mengalami kesalahan dengan python clr menjalankan kueri mdx ke layanan analitik Microsoft menggunakan adomd
Saya menyelesaikannya dengan bantuan Hans Vonn dan ini versi python :
sumber
Bagi mereka yang mungkin menemukan ini nanti, setelah .NET versi 4.6, saya mengalami masalah ini juga.
Pastikan Anda memeriksa file web.config Anda untuk baris berikut:
Jika Anda menjalankan 4.6.x atau versi .NET yang lebih tinggi di server, pastikan Anda menyesuaikan nilai targetFramework ini agar sesuai dengan versi kerangka kerja di server Anda. Jika versi Anda membaca kurang dari 4.6.x, maka saya akan merekomendasikan Anda memutakhirkan .NET dan menggunakan versi yang lebih baru kecuali kode Anda bergantung pada versi yang lebih lama (yang, dalam hal ini, Anda harus mempertimbangkan untuk memperbaruinya).
Saya mengubah targetFrameworks menjadi 4.7.2 dan masalah menghilang:
Kerangka kerja yang lebih baru menyelesaikan masalah ini dengan menggunakan protokol terbaik yang tersedia dan memblokir yang tidak aman atau usang. Jika layanan jarak jauh yang Anda coba sambungkan atau panggil memberikan kesalahan ini, bisa jadi mereka tidak mendukung protokol lama lagi.
sumber