Permintaan dibatalkan: Tidak dapat membuat saluran aman SSL/TLS c# Permintaan Web

Saya mencoba memanggil layanan dengan menggunakan kumpulan kode di bawah ini di c#. saya menggunakan .NET Framework 4.6.2. dan setiap kali saya mencapai kode (HttpWebResponse)myHttpWebRequest.GetResponse(), ia mengeluarkan pengecualian. Permintaan dibatalkan: Tidak dapat membuat saluran aman SSL/TLS. Saya mencoba banyak solusi yang dikatakan dalam stack overflow. tapi tidak satupun dari mereka tidak membantu saya. Saya berjuang dalam hal ini dari satu minggu terakhir lalu akhirnya memposting di sini. tolong bantuan apa pun akan dihargai. Saya bahkan menambahkan sertifikat di toko lokal tetapi masih tidak ada gunanya. di bawah ini adalah kode saya.

ServicePointManager.Expect100Continue = true;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;

Uri myUri = new Uri("https://CallingUrl");
WebRequest myWebRequest = HttpWebRequest.Create(myUri);
HttpWebRequest myHttpWebRequest = (HttpWebRequest)myWebRequest;
string svcCredentials = Convert.ToBase64String(ASCIIEncoding.ASCII.GetBytes("User:Pwd"));
myHttpWebRequest.Headers.Add("Authorization", "Basic " + svcCredentials);
myHttpWebRequest.PreAuthenticate = true;
myHttpWebRequest.ContentType = "application/x-www-form-urlencoded";
myHttpWebRequest.Method = "POST"
HttpWebResponse httpResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();

person Vijay H    schedule 26.08.2020    source sumber
comment
Bisakah Anda membuat ini berfungsi di tukang pos? Sudahkah Anda mendapatkan dokumentasi dari penulis untuk layanan ini? Juga mengapa Anda menggunakan webrequest dan bukan HttpClient, apakah ada kasus penggunaan khusus?   -  person TheGeneral    schedule 26.08.2020
comment
Saya telah memeriksa ini di alat tukang pos di sana saya mendapatkan respons yang tepat. dan saya juga mencoba dengan HttpClient lalu saya juga menghadapi masalah yang sama @MichaelRandall   -  person Vijay H    schedule 26.08.2020
comment
Sudahkah Anda mencoba mengubah ServicePointManager.SecurityProtocol   -  person TheGeneral    schedule 26.08.2020
comment
Ya saya mencoba SS3,Tls,Tls11,Tls12 tetapi masih tidak ada gunanya @MichaelRandall   -  person Vijay H    schedule 26.08.2020
comment
Ini mungkin masalah dengan permintaan HttpWebRequest, Anda dapat mencoba menambahkan referensi layanan untuk memanggil layanan alih-alih langsung membuat permintaan http.   -  person Ding Peng    schedule 28.08.2020


Jawaban (1)


Kode di atas baik-baik saja. tapi masalah ini disebabkan oleh alasan lain.

Setelah menggali banyak akhirnya menemukan solusinya, dan berpikir itu akan membantu orang lain yang menghadapi masalah yang sama, jadi posting jawaban ini.

Penyebab :

Secara default, batas implementasi Schannel adalah 32768 byte. Setelah mencapai batas maksimum, kesalahan di atas akan kembali terjadi pada saat jabat tangan antar Layanan.

Resolusi :

  1. Tingkatkan MessageLimitClient dari Default 0x8000 ke maksimal 0xf000 dengan kunci registri HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel\Messaging

  2. Buat Kunci Pesan jika tidak ada

  3. Kemudian Buat DWORD Baru, beri nama 'MessageLimitClient' dan atur Valuedata sebagai 'f000' (heksadesimal).

  4. Setelah mengubah nilai ini, restart server untuk menerapkan nilai baru.

masukkan deskripsi gambar di sini

person Vijay H    schedule 31.08.2020
comment
Sayangnya solusi ini tidak membantu dalam kasus saya (setidaknya tanpa restart). Tapi ada masalah di deskripsinya. 1: Saya tidak memiliki kunci Messaging di registri. Ke-2: Di deskripsi teks tertulis MaxLimitClient tetapi di gambar ada PesanLimitClient. - person Julo; 07.09.2020
comment
diedit. jika Anda tidak memiliki Pesan, Anda harus membuatnya. saya menyebutkannya - person Vijay H; 09.09.2020
comment
Saya menambahkan kunci (baik yang lama maupun yang baru) dan sayangnya itu tidak membantu saya memperbaiki kesalahan. Sekarang saya sedang mengerjakan solusi menggunakan Python sebagai pembaca permintaan HTTP. - person Julo; 09.09.2020
comment
ada banyak alasan yang menyebabkan masalah yang sama. dalam kasus Anda, penyebabnya adalah hal lain yang mungkin disebabkan oleh @Julo - person Vijay H; 09.09.2020