C# Framwork4.0 调用Web接口报错:基础连接已经关闭:发送时发生错误

最近开发一个项目,需要引用C++编译的dll文件。

经理用.Net Core3.1写了接口,在swagger上调试一点问题没有,用Framwork 4.0的winform去调用,就会报错【基础连接已经关闭:发送时发生错误】。

解决方法就是在WebRequest.Create(url),之前加一行ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3 | (SecurityProtocolType)3072 | (SecurityProtocolType)768 | SecurityProtocolType.Tls;

这里需要特别注意(SecurityProtocolType)3072 | (SecurityProtocolType)768,因为Framwork 4.0的框架里不包含Tls12和Tls11,所以使用编码强转的。这个问题4.6及以上就不存在了,但没办法,客户的XP系统只能用4.0.

 

 

 

 一点题外话,当初没找到解决方法,所以怀疑是Core的版本太高了,以前也没接触过,所以尝试用传统的WebApi去重新写接口,但每次执行到调用dll文件提供的方法,就会报System.StackOverflowException异常,用Winform直接调用和Core调用都不会有这个问题,尝试了很多办法,还是没有解决。

posted @ 2021-04-23 15:38  flirsow  阅读(973)  评论(0)    收藏  举报