2012-04-21 48 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