"從傳輸連接中讀取數據: 連接已關閉";"由於遠程方已關閉傳輸流,身份驗證失敗" 問題解決


之前調試好的環境,現在演示出問題了,HTTP訪問原代碼如下:

 1 var request = (HttpWebRequest)WebRequest.Create($"{ConfigurationManager.AppSettings["SRMeetUrl"]}{url}?");
 2             request.Method = "POST";
 3             request.ContentLength = 0;
 4             request.ContentType = "application/x-www-form-urlencoded";
 5             var bytes = Encoding.UTF8.GetBytes(para);
 6             request.ContentLength = bytes.Length;
 7             using (var writeStream = request.GetRequestStream())
 8             {
 9                 writeStream.Write(bytes, 0, bytes.Length);
10             }
11 
12             using (var response = (HttpWebResponse)request.GetResponse())
13             {
14                 var responseValue = string.Empty;
15 
16                 if (response.StatusCode != HttpStatusCode.OK)
17                 {
18                     var message = string.Format("請求數據失敗. 返回的 HTTP 狀態碼:{0}", response.StatusCode);
19                     throw new ApplicationException(message);
20                 }
21 
22                 using (var responseStream = response.GetResponseStream())
23                 {
24                     if (responseStream != null)
25                     {
26                         using (var reader = new StreamReader(responseStream))
27                         {
28                             responseValue = reader.ReadToEnd();
29                         }
30                     }
31                 }
32                 return JsonConvert.DeserializeObject<HttpResultBase<T>>(responseValue);

對比發現,配置的服務地址從HTTP變成了HTTPS,需要添加SSL訪問處理:

添加如下代碼:

1   ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback((sender, certificate, chain, errors) => true);
2   ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;

HTTPS訪問代碼如下:

 1  ServicePointManager.ServerCertificateValidationCallback = new System.Net.Security.RemoteCertificateValidationCallback((sender, certificate, chain, errors) => true);
 2  ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;
 3  var request = (HttpWebRequest)WebRequest.Create($"{ConfigurationManager.AppSettings["Url"]}{url}?");
 4  request.Method = "POST";
 5  request.ContentLength = 0;
 6  request.ContentType = "application/x-www-form-urlencoded";
 7  var bytes = Encoding.UTF8.GetBytes(para);
 8  request.ContentLength = bytes.Length;
 9  using (var writeStream = request.GetRequestStream())
10  {
11       writeStream.Write(bytes, 0, bytes.Length);
12  }
13 
14  using (var response = (HttpWebResponse)request.GetResponse())
15  {
16     var responseValue = string.Empty;
17 
18                 if (response.StatusCode != HttpStatusCode.OK)
19                 {
20                     var message = string.Format("請求數據失敗. 返回的 HTTP 狀態碼:{0}", response.StatusCode);
21                     throw new ApplicationException(message);
22                 }
23 
24                 using (var responseStream = response.GetResponseStream())
25                 {
26                     if (responseStream != null)
27                     {
28                         using (var reader = new StreamReader(responseStream))
29                         {
30                             responseValue = reader.ReadToEnd();
31                         }
32                     }
33                 }
34                 return JsonConvert.DeserializeObject<HttpResultBase<T>>(responseValue); ;
35             }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM