ServicePointManager.ServerCertificateValidationCallback 在 Wi

本文关键字:Wi ServerCertificateValidationCallback ServicePointManager | 更新日期: 2023-09-27 17:57:11

在将应用程序部署到生产环境之前,我们会从 .NET Web 应用程序调用较低环境中的许多 API。托管 API 的服务器往往没有由受信任的证书颁发机构签名的证书。

我创建了以下代码作为解决方法,并安全地排除在我们的生产环境中运行此代码:

if (ignoreCertErrors && environmentName.ToLower() != "PROD")
{
    ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
}

忽略CertErrors和environmentName都是提供给包含此逻辑的方法的参数。

这适用于我的本地开发盒 (Windows 7),但当我将其部署到 Windows 2012 R2 测试服务器时,我对具有不受信任证书的 API 的调用仍然失败,并出现以下错误:

===================================================================================================================================================================================================

== 消息:基础连接已关闭:意外错误 发生在发送时。堆栈跟踪:
at System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult)
at System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResultar)

===================================================================================================================================================================================================

== 消息:无法从传输连接读取数据:一个 远程主机强行关闭了现有连接。叠 跟踪:
at System.Net.TlsStream.EndWrite(IAsyncResult asyncResult)
at System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar)

===================================================================================================================================================================================================

== 消息:远程主机强行关闭了现有连接 堆栈跟踪:
at System.Net.Sockets.Socket.EndReceive(IAsyncResult asyncResult)
at System.Net.Sockets.NetworkStream.EndRead(IAsyncResult asyncResult)

===================================================================================================================================================================================================

==

我是否需要更改此逻辑,或者执行一些新操作来忽略 Windows Server 2012 R2 上的证书警告?

ServicePointManager.ServerCertificateValidationCallback 在 Wi

我将

以不同的方式解决这个问题,我创建了一个与错误消息相关的问题,并要求解决建议。