2012-04-21 10 views
6

Sto utilizzando BasicHttpBinding per connettere un servizio Web ospitato su una porta protetta (https). Per farlo funzionare, ho modificato il Security.Mode in TransportWithMessageCredential e Security.Message in BasicHttpMessageCredentialType.Cerificate. Sto anche chiamandohttps utilizzando BasicHttpBinding e ignorando errori di certificato

client.ClientCredentials.ClientCertificate.SetCertificate() 

con localhost come nome soggetto.

Il problema qui è che per il test dell'unità, ho un certificato non firmato dal server Web e dovrei ignorare qualsiasi errore del certificato generato durante la creazione del proxy; ma non riesco a farlo, perché continuo a ricevere un errore che mi dice di "specificare un certificato". In questo momento, sono senza tracce; Apprezzo qualsiasi aiuto qui.

+0

Se si utilizza solo il certificato del server, impostare 'SecurityMode' su' Transport' – Tung

+0

Thanks @Tung; Potrei ottenere il metodo RemoteCertificateValidationCallback chiamato e in grado di restituire 'TRUE' per ignorare gli errori! Si prega di scrivere il tuo commento come risposta! –

risposta

6

per SSL server, la SecurityMode dovrebbe essere impostato su Transport.

9

È possibile utilizzare il seguente codice per saltare la convalida del certificato. Ciò crea un RemoteCertificateValidationCallback che restituisce sempre true per qualsiasi certificato.

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

Ho già avuto il ServerCertificateValidationCallback ma non sono stato chiamato; una volta che ho cambiato la Modalità di sicurezza in Trasporto, ha funzionato! –

Problemi correlati