使用webclient和HttpWebRequest请求https页面时,都会提示“基础连接已关闭,发送时发生错误”。之前在win 10系统请求时就没有问题,现在是在windows xp sp3系统上请求,尝试各种方法都没有解决。细心分析所请求页面的header请求头,发现页面使用的是最新的安全连接 TLS 1.2 协议。
请求TLS 1.0时正常,后来发现xp 上的.net framework 3.5 不支持TLS 1.2,TLS 1.2 只有在 .net framework 4.5才支持。
3.5支持的范围包括:
成员名称 | 说明 | |
---|---|---|
None | 未指定 SSL 协议。 | |
Ssl2 | 指定 SSL 2.0 协议。SSL 2.0 已由 TLS 协议取代,之所以仍然提供这个方法,只是为了向后兼容。 | |
Ssl3 | 指定 SSL 3.0 协议。SSL 3.0 已由 TLS 协议取代,之所以仍然提供这个方法,只是为了向后兼容。 | |
Tls | 指定 TLS 1.0 安全协议。TLS 协议在 IETF RFC 2246 中定义。 | |
Default | 指定安全通信可接受安全套接字层 (SSL) 3.0 或传输层安全 (TLS) 1.0 |
4.5支持的范围:
成员名称 | 说明 | |
---|---|---|
Default | 指定安全通信可接受安全套接字层 (SSL) 3.0 或传输层安全 (TLS) 1.0 | |
None | 未指定 SSL 协议。 | |
Ssl2 | 指定 SSL 2.0 协议。 SSL 2.0 已由 TLS 协议取代,之所以仍然提供这个方法,只是为了向后兼容。 | |
Ssl3 | 指定 SSL 3.0 协议。 SSL 3.0 已由 TLS 协议取代,之所以仍然提供这个方法,只是为了向后兼容。 | |
Tls | 指定 TLS 1.0 安全协议。 TLS 协议在 IETF RFC 2246 中定义。 | |
Tls11 | 指定 TLS 1.1 安全协议。 TLS 协议在 IETF RFC 4346 中定义。 | |
Tls12 | 指定 TLS 1.2 安全协议。 TLS 协议在 IETF RFC 5246 中定义。 |
这就是本次遇到问题“基础连接已关闭,发送时发生错误”的原因,当然此错误也有可能是别的原因,其他原因网上很多解决方法。