"从传输连接中读取数据: 连接已关闭";"由于远程方已关闭传输流,身份验证失败" 问题解决
之前调试好的环境,现在演示出问题了,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 }
技术娴熟,稳得一匹。
分类:
C#-WPF
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗