我正在开发一个 C# .NET 应用程序,该应用程序需要与不同服务器上的不同服务进行通信。我不参与服务器的配置,所以我必须满足他们的安全要求。所有的通信都是通过使用 Flurl 的 http 调用进行的。
我从要求将 SecurityProtocolType 设置为 TLS 1.2 的服务器获取信息,因此在发送我的 http 请求之前,我将其设置在我的代码中:
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
这很好用。问题是我必须从另一台服务器获取信息,如果我在 ServicePointManager 上设置了任何 SecurityProtocol,我将无法进行身份验证。如果我在 SecurityProtocol 上评论我之前的设置,我可以进行身份验证。如果我不这样做,我不能。
有什么方法可以“取消设置”、忽略或删除该 ServicePointManager.SecurityProtocol 设置?我已经尝试将它设置为 SystemDefaul,以及所有 tls 和 ssl 选项,但只有在我根本不设置它时它才会起作用。
在第二次通信中(我无法设置 SecurityProtocol),我也忽略了 SSL 问题
System.Security.Cryptography.X509Certificates.X509Chain chain, System.Net.Security.SslPolicyErrors sslPolicyErrors) {return true;};