问题
C#引用HTTPS WebService后调用方法时出现 基础连接已关闭:发送时发生错误 解决方法?SoapHttpClientProtocol无法与https连接上解决方法?
解答
有个C# 2.0项目在引用https的webservice后,调用时总是出现 基础连接已关闭,发送时发生错误,反正就是连接不上。加了证书也不行。
后来看到官方文章大概说明如下
SoapHttpClientProtocol 和 TLS 1.2 - 客户端和服务器无法通信,因为它们没有通用算法
SoapHttpClientProtocol and TLS 1.2 - The client and server cannot communicate, because they do not possess a common algorithm
原因:如果您的客户端应用程序是针对 .NET Framework 4.5.2 或更低版本编译的,
则默认情况下 ServicePointManager.SecurityProtocol 被初始化为 SecurityProtocolType.Ssl3 |SecurityProtocolType.Tls(仅限 SSL 3.0 和 TLS 1.0),因此无法连接到需要 TLS 1.2 的远程服务器
解决方法就是升级到C# 4.0及以上版本解决问题。