我试图从.NET 4.6.2进行内部应用程序的SOAP WCF调用,我得到上面的错误。我找到了一个我认为可行的解决方案,但经过进一步研究,它只适用于.NET 4.5:
System.Net.ServicePointManager.ServerCertificateValidationCallback +=
(se, cert, chain, sslerror) => true;
是否有适用于.NET 4.6的可比解决方案?我并不担心安全问题,这仅适用于内部测试。
ServerCertificateValidationCallback需要至少.Net 4.5 - 它应该在4.6.2中正常工作。如果它不起作用,请在实例化客户端之前设置它。
作为旁注,你真的不应该全局禁用验证,即使它是“仅用于测试”,因为它是一个相当大的安全问题,并且在测试解决方案之前突然出现的那些着名的最后一句话,你太忙了,不记得采取出来!
你打电话到底是怎么回事?所有机制都有更集中的方法来禁用对这一个调用的检查。
或者只需在端点上放置一个自签名证书并在您的开发机器上信任它,然后您就不会打开任何安全漏洞。
对于服务器证书的验证,您可以使用以下代码作为替代,它也适用于Asp.net Core项目。
//client is a proxy class object.
client.ClientCredentials.ServiceCertificate.SslCertificateAuthentication =
new X509ServiceCertificateAuthentication()
{
CertificateValidationMode = X509CertificateValidationMode.None,
RevocationMode = X509RevocationMode.NoCheck
};
如果问题仍然存在,请随时告诉我。