2012-04-21 18 views
6

Estoy usando BasicHttpBinding para conectar un servicio web alojado en un puerto seguro (https). Para que funcione, he cambiado Security.Mode a TransportWithMessageCredential y Security.Message a BasicHttpMessageCredentialType.Cerificate. También llamo ahttps usando BasicHttpBinding e ignorando errores de certificado

client.ClientCredentials.ClientCertificate.SetCertificate() 

con localhost como nombre.

El problema aquí es que para las pruebas unitarias, tengo un certificado sin firmar del servidor web y se supone que debo ignorar cualquier error de certificado lanzado durante la creación del proxy; pero no puedo hacerlo, porque sigo obteniendo un error diciéndome que "especifique un certificado". En este momento, no tengo idea; Agradezco cualquier ayuda aquí.

+0

Si solo está utilizando el certificado del servidor, establezca 'SecurityMode' en' Transport' – Tung

+0

Gracias @Tung; Pude llamar al método RemoteCertificateValidationCallback y pude devolver 'TRUE' para ignorar los errores. Por favor escribe tu comentario como respuesta! –

Respuesta

6

para SSL servidor, el SecurityMode se debe establecer en Transport.

9

Puede usar el siguiente código para omitir la validación del certificado. Esto crea un RemoteCertificateValidationCallback que siempre devuelve verdadero para cualquier certificado.

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

Ya tenía el ServerCertificateValidationCallback pero no me llamaban; una vez que cambié el Modo de Seguridad a Transporte, ¡funcionó! –

Cuestiones relacionadas