我需要访问具有证书的REST服务,该证书并非真正有效。所以我在我的代码中输入了以下内容:
System.Net.ServicePointManager.ServerCertificateValidationCallback =
((sender, cert, chain, errors) =>
cert.Subject.Contains("soap.example.com"));
之后我会做我必须做的事情来检索Soap-Values。
一切都很好。
但是后来我需要连接到另一个域(具有有效的SSL证书)并且由于证书错误而崩溃,如果我重新启动IIS并且仅在再次调用上面显示的代码段之后才返回:
System.Net.WebException:底层连接已关闭:可以 不建立SSL / TLS安全通道的信任关系。 ---> System.Security.Authentication.AuthenticationException:远程 证书根据验证程序无效。
因此,在完成Soap-call之后,我怎样才能确定,正常行为是否再次起作用?
简单地重置为ServerCertificateValidationCallback=null
似乎不起作用。
(我完全了解CallBack的危险性)
答案 0 :(得分:1)
System.Net.ServicePointManager.ServerCertificateValidationCallback =
((sender, cert, chain, errors) =>
errors == SslPolicyErrors.None || cert.Subject.Contains("soap.example.com"));
应该这样做。