HttpWebRequest.GetResponse()调用时报错

测试发布一个Winform程式时,出现连接关闭的异常信息.

The underlying connection was closed: Unable to connect to the remote server.

作业环境: VS2008, WINDOWS2008, IIS6.0, .NET 3.5 . 

我是之前使用正常, 在使用了一次360的清理后, 才出现这个异常. 开始以为是禁用了某个服务, 恢复所有被禁的服务后,还是报错. 

尝试重装.net3.5, 问题还是存在. 

查了很久的资料, 有说是是设置的代理服务器异常的, 也有说防火墙的原因的. 最后找一个正确的原因:安全协议问题. 

http://www.mamicode.com/info-detail-1511579.html

增加以下代码后, 测试正常. 

            ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls; 

之后另一支程式使用相同功能也出现了错误, 而且下载用onceclick发布的程式时, 提示下载失败. 网上搜来的方法均不能解决问题. 以下是搜到加代码的方法, 但是没有效果. 

            //req.Credentials = CredentialCache.DefaultCredentials;
            //ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
            //ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;
            //req.KeepAlive = false;

也有说是response连接短时间多次连接会造成连接中断, 需要每次开启后主动关闭, 但目前是连接都无法建立, 只能是以后注意了. 

尝试在VS中修改Build时所使用.net版本, 结果发现修改为.net2.0后使用正常. 基本上可以确认是.net3.5出了问题,但尝试过重装.net, 不知道为什么没有用. 现在只剩下重装系统的选项了, 悲剧. 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
public static T Post<T>(string url, string data, string staffId, string contentType) { try { byte[] bytes = Encoding.UTF8.GetBytes(data); HttpWebRequest httpWebRequest = (HttpWebRequest)WebRequest.Create(url); string timeStamp = ApiHelper.GetTimeStamp(); string random = ApiHelper.GetRandom(); httpWebRequest.Headers.Add("staffid", staffId.ToString()); httpWebRequest.Headers.Add("timestamp", timeStamp); httpWebRequest.Headers.Add("nonce", random); //ResultMsg signToken = ApiHelper.GetToken(url, staffId); // httpWebRequest.Headers.Add("signature", ApiHelper.GetSignature(timeStamp, random, staffId, data, signToken)); httpWebRequest.Headers.Add("jwtcookie", GetJwt(url, data));//cwj 直接通过jwt验证身份 httpWebRequest.Method = "POST"; httpWebRequest.ContentLength = (long)bytes.Length; httpWebRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"; httpWebRequest.ContentType = contentType; Stream requestStream = httpWebRequest.GetRequestStream(); requestStream.Write(bytes, 0, bytes.Length); httpWebRequest.Timeout = 300000; httpWebRequest.Headers.Set("Pragma", "no-cache"); HttpWebResponse httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); Stream responseStream = httpWebResponse.GetResponseStream(); StreamReader streamReader = new StreamReader(responseStream, Encoding.UTF8); string text = streamReader.ReadToEnd(); requestStream.Close(); streamReader.Close(); responseStream.Close(); httpWebRequest.Abort(); httpWebResponse.Close(); return JsonConvert.DeserializeObject<T>(text); } catch (Exception) { throw; } }
最新发布
06-08

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值