2012-04-21 45 views
6

BasicHttpBindingを使用して、セキュリティで保護された(https)ポートでホストされているWebサービスに接続しています。それを機能させるために、私はSecurity.ModeTransportWithMessageCredentialSecurity.MessageからBasicHttpMessageCredentialType.Cerificateに変更しました。私も電話していますhttps BasicHttpBindingを使用し、証明書のエラーを無視する

client.ClientCredentials.ClientCertificate.SetCertificate() 

件名はlocalhostです。

ここで問題となるのは、単体テストではWebサーバーからの署名のない証明書があり、プロキシの作成中にスローされた証明書のエラーは無視されます。私は「証明書を指定する」というエラーが表示され続けるので、私はそうすることができません。今、私は無知です。私はここに助けを感謝します。

+0

サーバ証明書だけを使用している場合は、 'SecurityMode'を' Transport'に設定してください。 – Tung

+0

Thanks @Tung;私はRemoteCertificateValidationCallbackメソッドを呼び出すことができ、エラーを無視するために 'TRUE'を返すことができます!あなたのコメントを答えとして書いてください! –

答えて

6

SecurityModeTransportに設定する必要があります。

9

次のコードを使用すると、証明書の検証をスキップできます。これにより、RemoteCertificateValidationCallbackが作成され、すべての証明書に対して常にtrueを返します。サーバーのSSL用

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

私は既にServerCertificateValidationCallbackを持っていましたが、呼び出されませんでした。一度セキュリティモードをTransportに変更すると、それは機能しました! –