在将应用程序部署到生产环境之前,我们从.NET Web应用程序在较低环境中调用许多API。那些托管API的服务器往往没有由受信任的证书颁发机构签名的证书。
我创建了以下代码作为解决方法,并可以安全地排除在生产环境中运行此代码:
if (ignoreCertErrors && environmentName.ToLower() != "PROD")
{
ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
}
ignoreCertErrors和environmentName都是提供给包含此逻辑的方法的参数。
这在我的本地开发箱(Windows 7)上有效,但是当我将其部署到Windows 2012 R2测试服务器时,使用不受信任的证书对API的调用仍然失败,并出现以下错误:
==================================================消息:基础连接已关闭:发送中发生意外错误。堆栈跟踪:
位于System.Net.Http.HttpClientHandler.GetResponseCallback(IAsyncResultar)的System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult
)==================================================消息:无法从传输连接中读取数据:远程主机强行关闭了现有连接。堆栈跟踪:
位于
System.Net.ConnectStream.WriteHeadersCallback(IAsyncResult ar)处的System.Net.TlsStream.EndWrite(IAsyncResult asyncResult )================================================== ===============消息::一个现有的连接被强制由远程主机堆栈跟踪封闭
在System.Net.Sockets.Socket.EndReceive(IAsyncResult的asyncResult)
在的System.Net.Sockets .NetworkStream.EndRead(IAsyncResult asyncResult)================================================== ===============
我是否需要更改此逻辑,还是需要做一些新的事情来忽略Windows Server 2012 R2上的证书警告?
我将以另一种方式处理这种情况,我创建了一个与错误消息相关的问题,并寻求解决的建议。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句