切换到TLS 1.2后,C#app再也无法访问网站 – GetResponse()失败

我们有一个内部应用程序,可以向我们的供应商站点发出 XML调用.出于PCI合规性和安全性原因,他们开始禁用除TLS 1.1和TLS 1.2之外的所有内容.他们已经建立了一个测试站点,我们有这个新要求进行测试.

我们的应用程序(C#,Windows Forms应用程序,.NET 4.5)可以很好地连接到他们当前的站点.
当我尝试调用他们的新测试站点时,它在GetRequestStream()调用失败时出现“底层连接已关闭:发送时发生意外错误”.

如果我更新应用程序并设置:
System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12

然后它由GetRequestStream()获取,并在GetResponse()调用失败,“底层连接已关闭:连接意外关闭.”

我尝试了很多东西,其中没有一个有效.我正在设置UserAgent,我尝试设置KeepAlive = false,…
如果我在浏览器中访问供应商URL,我可以很好地完成它.我只是遇到了我的C#应用​​程序的问题

有什么想法吗?我显然无法访问他们的服务器.在我的机器上有人设置我需要改变吗?

解决方法

我认为您的请求很可能在TLS协商阶段失败.我自己也遇到过类似的问题,通常需要使用网络协议分析器(如wireshark)来跟踪客户端和服务器之间的通信,并确定消息已停止的位置.如果TLS协商失败,服务器将终止连接,您将收到类似于上面的错误.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...