测试发布一个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, 不知道为什么没有用. 现在只剩下重装系统的选项了, 悲剧.