今天上线有一段时间的项目突然报错了,在调用api的时候发生错误:“基础连接已经关闭: 发送时发生错误”,上谷歌找了一下原因,分析:因为请求的url是基于https的,所以Post请求时必须添加ServicePointManager.SecurityProtocol 安全协议。但选择哪个协议呢?一开始看到项目里面都是基于ssl的,索性也用了ssl,但是没有效果,最后干脆直接把所有的协议枚举用或的形式全都写出来,成功了。
ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls;
附上官方说明
https://docs.microsoft.com/zh-cn/dotnet/api/system.net.securityprotocoltype?view=netframework-4.7.2