C# HTTPS设置 ServicePointManager.SecurityProtocol 报错?

采集两个网站的数据,单独开起来都没有问题,但是一起开起来后其中一个网设置了 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;,然后另外一个请求就报错了:远程服务器返回错误: (403) 已禁止。

第1个回答  2023-05-16
说明报403错误的这个网站不支持TLS1.2,而用ServicePointManager指定的SecurityProtocol是全局生效的,导致客户端无法与网站建立TLS连接。
简单解决的话可以去掉 ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 这句,这样客户端和服务端会自己协商可用的协议。或者适当扩大允许的TLS范围,比如:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11;
这样会同时支持TLS1.2和TLS1.1,客户端与网站会在自己支持的范围里协商使用一个进行通讯。
相似回答