PROBLEMA
Error en páginas ASP.NET que acceden a webservice. El error se produce de forma intermitente.
En el navegador cliente se obtiene el siguiente mensaje:
"Sys.WebForms.PageRequestManagerServerErrorException: Error desconocido al procesar la solicitud en el servidor. El código de estado devuelto por el servidor era: 500"
En depuración se obtiene:
Message: "Se ha terminado la conexión: No se puede establecer una relación de confianza para el canal seguro SSL/TLS."
InnerException: "System.Security.Authentication.AuthenticationException: El certificado remoto no es válido según el procedimiento de validación."
SOLUCIÓN
Forzar explícitamente el establecimiento de las credenciales por defecto del webservice y evitar la validación del certificado si no se requiere.
Código en VB.NET:
System.Net.ServicePointManager.ServerCertificateValidationCallback = New System.Net.Security.RemoteCertificateValidationCallback(AddressOf validarCertificado)
Dim miWebService1 As miWebService = New miWebService
miWebService1.Credentials = System.Net.CredentialCache.DefaultCredentials
Private Function validarCertificado(ByVal sender As Object, ByVal certificado As System.Security.Cryptography.X509Certificates.X509Certificate, ByVal cadena As System.Security.Cryptography.X509Certificates.X509Chain, ByVal sslErrores As System.Net.Security.SslPolicyErrors) As Boolean
Return True
End Function
Dim miWebService1 As miWebService = New miWebService
miWebService1.Credentials = System.Net.CredentialCache.DefaultCredentials
Private Function validarCertificado(ByVal sender As Object, ByVal certificado As System.Security.Cryptography.
Return True
End Function