sábado, 15 de enero de 2011

ASP.NET. Error de credenciales al acceder a webservice


 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

martes, 11 de enero de 2011

Plesk y IIS. Error "Acceso denegado" al acceder a aplicación ASP.NET

 PROBLEMA
Error ASP.NET obtenido en servidor IIS con Plesk. "System.UnauthorizedAccessException: Acceso denegado. (Excepción de HRESULT: 0x80070005 (E_ACCESSDENIED))".

 CAUSA
Problema con los permisos establecidos para ASP.NET.

 SOLUCIÓN PASO A PASO
1) Ejecutar ventana de comandos en modo administrador.
2) Ejecutar el comando
cacls C:\Windows\assembly\GAC_MSIL /E /R psacln /T /C
3) Ejecutar el comando
cacls C:\Windows\assembly\GAC_MSIL /E /R psaadm /T /C
4) En caso de que siga sin funcionar, volver a subir web.config.