Cuando recibimos un error 5xx, cualquier servidor web, nos indica que se ha producido un error que puede estar causado por diferentes motivos como:
- Un error de permisos de usuarios
- Un error de lectura/escritura en disco
- Un error de aplicacion o base de datos
- Un error de timeout, gateway, proxy
- Un error de limite de memoria
- Un error de sobrecarga de peticiones,
- etc.
Los errores 5xx se agrupan dentro de estas categorias:
- 500 Internal Server Error
- 501 Not Implemented
- 502 Bad Gateway
- 503 Service Unavailable
- 504 Gateway Timeout
- 505 HTTP Version Not Supported
Una forma rápida de saber que esta pasando en nuestro servidor es mirar logs del propio IIS y logs de Windows en el Visor de Eventos.
Otra forma, es saber que IIS, justo después del error, indica cual es el origen del problema y si tenemos activada la página de errores, incluso nos dara una solución o un enlace para saber como solucionarlo.
Como una imagen, vale más que 1000 palabras, veamoslo aqui:
IIS, tiene un subgrupo de errores HTTP detallado para ayudarnos a solucionarlo:
500 – Error interno del servidor
- 500.0 – Error de algún módulo o ISAPI
- 500.11 – La aplicación se está cerrando en el servidor web
- 500.12 – La aplicación está ocupada reiniciando en el servidor Web
- 500.13 – El servidor web está demasiado ocupado
- 500.15 – No se permiten solicitudes directas de Global.asax
- 500.19 – Datos de configuración no válidos
- 500.21 – Módulo no reconocido
- 500.22 – Config. httpModules no funciona en modo canalización administrado
- 500.23 – No se aplica controladores HTTP en modo canalización administrado
- 500.24 – Suplantación ASP.NET no funciona en modo de canalización administrado
- 500.50 – Error de ejecución de regla de entrada o configuración
- 500.51 – Error de ejecución de regla global o configuración global
- 500.52 – Error de ejecución de una regla de salida. RQ_SEND_RESPONSE
- 500.53 – Error de ejecución de regla de salida. RQ_RELEASE_REQUEST_STATE.
- 500.100: Error ASP interno
501 – Valores de encabezado especifican una configuración no implementada
- 501.0 – No implementado. El explorador del cliente envía un verbo HTTP Trace y el servidor no está configurado para procesar el verbo HTTP Trace.
502 – Servidor web recibió una respuesta no válida actuando como gateway o proxy
- 502.1 – Tiempo de espera de aplicación CGI
- 502.2 – Puerta de enlace incorrecta: salida prematura
- 502.3 – Puerta de enlace incorrecta: Error de conexión de reenviador (ARR)
- 502.4 – Puerta de enlace incorrecta: no hay ningún servidor (ARR)
- 502.5 – Error de WebSocket (ARR)
- 502.6 – Error de solicitud de reenvío (ARR)
- 502.7 – Ejecutar la solicitud falla (ARR)
503: Servicio no disponible
- 503.0 – Grupo de aplicaciones disponible
- 503.2 – Superado el límite de solicitudes simultáneas
- 503.3 – ASP.NET cola llena
Recordar: IIS en la página web del error nos muestra información detallada y un link para buscar la solución a nuestro problema.
Que ocurre si no veo el error detallado
Es posible que veamos un error general sin detallar que esta pasando.
En este caso, hay que configurar IIS de forma global (cosa que no siempre es posible) o se puede indicar en web.config de nuestra aplicación ASP.NET para indicar expresamente que muestre los errores especificos escribiendo esto en nuestro web.config dentro del apartado correspondiente.
Poner esto para errores detallados:
<system.webServer>
<httpErrors existingResponse="PassThrough" errorMode="Detailed"/>
<asp scriptErrorSentToBrowser="true"/>
</system.webServer>
Poner esto temporalmente para depurar:
<system.web>
<customErrors mode="Off"/>
<compilation debug="true"/>
</system.web>
Referencia Protocolo HTTP
Link: https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10