2012-04-21 186 views
6

我使用BasicHttpBinding来连接托管在安全(https)端口上的Web服务。为了得到它的工作,我已经将Security.Mode改为TransportWithMessageCredentialSecurity.Message改为BasicHttpMessageCredentialType.Cerificate。我也打电话https使用BasicHttpBinding并忽略证书错误

client.ClientCredentials.ClientCertificate.SetCertificate() 

以localhost作为主题名称。

这里的问题是,对于单元测试,我有一个来自Web服务器的未签名证书,我应该忽略代理创建期间抛出的任何证书错误;但我无法这样做,因为我不断收到一个错误,告诉我要“指定证书”。现在,我无能为力。我很感激这里的任何帮助。

+0

如果您只使用服务器证书,请将'SecurityMode'设置为'Transport' – Tung 2012-04-21 05:36:38

+0

Thanks @Tung;我可以调用RemoteCertificateValidationCallback方法,并且可以返回'TRUE'来忽略错误!请将您的评论写为答案! – 2012-04-21 08:59:03

回答

6

对于服务器SSL,该SecurityMode应设置为Transport

9

您可以使用以下代码跳过证书验证。这将创建一个始终为任何证书返回true的RemoteCertificateValidationCallback

System.Net.ServicePointManager.ServerCertificateValidationCallback = 
    (sender, certificate, chain, errors) => true; 
+1

我已经有ServerCertificateValidationCallback但没有被调用;一旦我将安全模式更改为传输,它就起作用了! – 2012-04-21 10:04:29