Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se proporcionan pasos de solución de problemas para resolver errores de código de estado HTTP 4xx y 5xx en Internet Information Services (IIS). Los códigos de estado 4xx indican un problema en el lado cliente, mientras que los códigos de estado 5xx indican un problema en el lado servidor. Las instrucciones le ayudarán a identificar la causa de estos errores y a resolverlos de forma eficaz.
Identificación de errores 4xx
Los códigos de estado HTTP 4xx indican que se produjo un error debido a un problema del lado cliente. Por ejemplo, es posible que el explorador cliente haya solicitado una página que no exista o que el explorador cliente no haya proporcionado información de autenticación válida.
Para identificar los errores 4xx , examine los registros de IIS y los registros HTTPERR:
El código de estado HTTP se registra en los registros de IIS. Este archivo se almacena normalmente en C:\inetpub\logs\Logfiles, pero se puede configurar a través del registro de IIS en el Administrador de IIS.
El controlador de kernel de HTTP.sys puede generar un código de error 4xx, lo que significa que es posible que estas solicitudes no lleguen a IIS y, por tanto, no se registrarán en los registros de IIS. HTTP.sys registra estos errores en archivos independientes denominados registros HTTPERR. Este archivo se almacena normalmente en C:\Windows\System32\LogFiles\HTTPERR , pero se puede configurar a través del Registro
HKEY\LOCAL\MACHINE\System\CurrentControlSet\Services\HTTP\Parameters\ErrorLoggingDir
.Una manera de confirmar si la respuesta 4xx procede de HTTP.sys es recopilar un archivo de seguimiento HAR en el cliente y buscar el encabezado de respuesta Microsoft-HttpApi/2.0.
Para capturar un archivo de seguimiento HAR, que registra la interacción del explorador con el sitio web, siga las instrucciones de Captura de un seguimiento del explorador para solucionar problemas.
Examen de los registros de IIS
Si encuentra errores en los registros de IIS, anote el código de estado (sc-status
) y el código de subestado (sc-substatus
) y consulte Introducción al código de estado HTTP para obtener más información.
Para obtener más información sobre el código de estado y comprender qué módulo o controlador devolvieron errores 4xx , recopile registros de seguimiento de solicitudes con error (FREB) en torno al momento en que se produjo el problema configurando una regla FREB que el código de estado se ve en los registros de IIS.
Examen de los registros HTTPERR
Si encuentra errores en los registros de HTTPERR, anote el motivo (s-reason
) y vea Tipos de errores registrados por la API del servidor HTTP para obtener más información.
Identificación de errores 5xx
Los códigos de estado HTTP 5xx indican que el servidor no pudo completar la solicitud porque el servidor encontró un error al procesar la solicitud. Siga las instrucciones siguientes en función del tipo de aplicación.
500 errores en ASP clásico
Si se produce un error 500 en ASP clásico, compruebe el código de error o el mensaje de error en la cs-uri-query
consulta de los registros de IIS.
Para obtener más información, capture y examine los registros de seguimiento de solicitudes con error (FREB) para los errores 500.
500 errores en general IIS
Si se produce un error 500 en IIS general, examine los registros de IIS, anote el código de estado () y el código de subestado (sc-status
sc-substatus
) y consulte Introducción al código de estado HTTP para obtener más información sobre el error.
Habilite los mensajes de error detallados si es factible para obtener más detalles. Para habilitar mensajes de error detallados, siga estos pasos:
Abra la ventana Ejecutar comando.
Ejecute inetmgr.
En el Administrador de IIS, en el panel Conexiones situado en el lado izquierdo de la consola, expanda el nombre del equipo, expanda Sitios y, a continuación, seleccione el sitio web de destino.
Haga doble clic en el icono Páginas de error en el panel central.
A la derecha, en el panel Acciones , seleccione Editar configuración de características.
En el cuadro de diálogo Editar configuración de páginas de error (donde elige enviar solicitudes locales y remotas), el segundo botón de opción es lo que necesita seleccionar para devolver errores detallados para las solicitudes locales y remotas. De forma predeterminada, se selecciona la opción inferior para enviar errores detallados solo enviados para las solicitudes locales.
No se recomienda enviar errores detallados para solicitudes remotas, ya que esta opción podría exponer información confidencial a Internet. Debe revertir los cambios una vez que tenga más información sobre el error.
Para obtener más información, capture y examine los registros de seguimiento de solicitudes con error (FREB) para los errores 500.
500 errores en ASP.NET
Si se produce un error 500 en ASP.NET, use los métodos siguientes para identificar la causa principal del error:
Compruebe los registros de eventos de la aplicación.
Compruebe los registros de eventos de la aplicación en torno al momento en que se produjo el problema. ASP.NET registrará los detalles del error, incluida la pila de llamadas, en los registros de eventos de la aplicación.
Para acceder a los registros de eventos de la aplicación, siga estos pasos:
- Abra el menú Inicio, busque Visor de eventos y seleccione Visor de eventos.
- En Visor de eventos, abra el nodo Registros de Windows.
- Seleccione Aplicación para abrir los registros de eventos de la aplicación.
- Busque errores asociados a la aplicación con errores. El valor de la columna Source (Origen ) para los errores es IIS AspNetCore Module o IIS Express AspNetCore Module.
Capturar volcados de memoria.
En algunos casos, podría ser necesario capturar un volcado de memoria de una excepción específica para examinar los detalles que rodean la excepción que provocó el estado HTTP 500.
Para capturar volcados de memoria, siga las instrucciones de Recopilación de volcados de memoria para obtener una excepción de primera oportunidad cuando se produzca.
Use la herramienta DebugDiag 2 Analysis (parte del conjunto DebugDiag ) con la regla CrashHangAnalysis en los volcados recopilados para generar un informe que se pueda usar para revisar la pila de llamadas e identificar la causa principal.
Para generar un informe mediante la herramienta DebugDiag Analysis, siga estos pasos:
- Abra DepurarDiag 2 Analysis (Análisis de DebugDiag 2).
- Seleccione Agregar archivos de datos y agregue los archivos de .dmp .
- Seleccione CrashHangAnalysis y PerfAnalysis y seleccione Iniciar análisis.
Cuando termine, se creará un informe (.mht) en C:\Archivos de programa\DepurarDiag\Reports y se mostrará en Internet Explorer con los resultados y recomendaciones.
Si usa archivos DLL personalizados, puede especificar la ruta de acceso de búsqueda de símbolos para los archivos PDB personalizados siguiendo estos pasos:
- Abra la herramienta Colección DebugDiag 2.
- Seleccione >>y rutas de búsqueda.
- En Ruta de acceso de búsqueda de símbolos para depuración, seleccione Examinar para establecer la ruta de acceso.
Capture el seguimiento de Perfview para identificar los problemas de ExecutionTimeout.
Para 500 errores debido a que se supera el ASP.NET ExecutionTimeout, capture un seguimiento y volcados de perfView para identificar los retrasos .
Errores 500 en ASP.NET Core
Si se produce un error 500 en ASP.NET Core, use los métodos siguientes para identificar la causa principal del error:
Compruebe los registros de eventos de la aplicación.
Para acceder a los registros de eventos de la aplicación, siga estos pasos:
- Abra el menú Inicio, busque Visor de eventos y seleccione Visor de eventos.
- En Visor de eventos, abra el nodo Registros de Windows.
- Seleccione Aplicación para abrir los registros de eventos de la aplicación.
- Busque errores asociados a la aplicación con errores. El valor de la columna Source (Origen ) para los errores es IIS AspNetCore Module o IIS Express AspNetCore Module.
Habilite la página Excepción del desarrollador.
La
ASPNETCORE_ENVIRONMENT
variable de entorno se puede agregar a web.config para ejecutar la aplicación en el entorno de desarrollo. Si no invalida la configuración de entorno en el código de inicio de la aplicación mediante elUseEnvironment
método en el generador de hosts, la variable de entorno permite que la página de excepciones del desarrollador aparezca cuando se ejecute la aplicación.<aspNetCore processPath="dotnet" arguments=".\MyApp.dll" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" hostingModel="InProcess"> <environmentVariables> <environmentVariable name="ASPNETCORE_ENVIRONMENT" value="Development" /> </environmentVariables> </aspNetCore>
Solo se recomienda establecer la variable de entorno para
ASPNETCORE_ENVIRONMENT
en los servidores de ensayo y prueba que no se exponen a Internet. Quite la variable de entorno del archivo web.config cuando termine de solucionar los problemas.Habilite el registro del módulo
stdout
principal de ASP.NET.Para habilitar y ver
stdout
registros, siga estos pasos:Vaya a la carpeta de implementación del sitio en el sistema de hospedaje.
Si la carpeta Logs no existe, cree la carpeta. Para obtener instrucciones sobre cómo habilitar MSBuild para crear automáticamente la carpeta de registros en la implementación, consulte ASP.NET estructura de directorios core.
Edite el archivo web.config. Establezca
stdoutLogEnabled
entrue
y cambie lastdoutLogFile
ruta de acceso para que apunte a la carpeta logs (por ejemplo, .\logs\stdout) como la siguiente:<aspNetCore processPath="dotnet" arguments=".\App.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout"> </aspNetCore>
Use
stdout
como prefijo de nombre de archivo. Una marca de tiempo, el identificador de proceso (PID) y la extensión de archivo se agregan automáticamente cuando se crea el registro. Un nombre de archivo de registro típico es stdout_<timestamp>_<PID>.log.Asegúrese de que la identidad del grupo de aplicaciones tiene permisos de escritura en la carpeta logs.
Guarde el archivo web.config actualizado.
Realice una solicitud a la aplicación.
Vaya a la carpeta logs. Busque y abra el registro más reciente
stdout
.Investigue los errores del registro.
Para deshabilitar
stdout
el registro cuando se complete la solución de problemas, siga estos pasos:- Edite el archivo web.config.
- Establecer
stdoutLogEnabled
enfalse
. - Guarde el archivo.
Habilite el registro de depuración del módulo principal (IIS) de ASP.NET.
Para habilitar el registro de depuración del módulo principal de ASP.NET, agregue la siguiente configuración del controlador al archivo web.config de la aplicación:
<aspNetCore ...> <handlerSettings> <handlerSetting name="debugLevel" value="file" /> <handlerSetting name="debugFile" value="c:\temp\ancm.log" /> </handlerSettings> </aspNetCore>
Confirme que la ruta de acceso especificada para el registro existe y que la identidad del grupo de aplicaciones tiene permisos de escritura en la ubicación.
Errores 502 en ARR
Si se produce un error 502 en El enrutamiento de solicitudes de aplicación (ARR), siga las instrucciones de Solución de problemas de errores 502 en ARR.
Errores 503
Si encuentra errores 503, el código de subestado (sc-substatus
) en los registros de IIS o en los s-reason
HTTPERR puede proporcionar algunas sugerencias.
Para más información, vea:
Además, consulte el siguiente artículo, que resalta un problema conocido que puede provocar errores 503:
Respuesta 503 de HTTP Servicio no disponible de IIS: una causa genérica común
Recolección de datos
Pasos para capturar registros freb
Importante
Para configurar los registros freb, asegúrese de que el servicio de rol de seguimiento esté instalado para IIS.
Para instalar el servicio de rol de seguimiento para IIS, siga estos pasos:
- Abra Administrador del servidor y seleccione Administrar>agregar roles y características.
- En la ventana Asistente para agregar roles y características, seleccione Siguiente hasta llegar a la página Roles de servidor.
- Expanda Servidor web (IIS)>Estado y diagnóstico del>web y active la casilla Seguimiento.
- Seleccione Siguiente para los pasos posteriores y, a continuación, seleccione Instalar.
Una vez instalado el servicio de rol de seguimiento , siga estos pasos para capturar FREB:
Abra la ventana Ejecutar comando.
Ejecute inetmgr.
En el Administrador de IIS, en el panel Conexiones , expanda el nombre del equipo, expanda Sitios y, a continuación, seleccione el sitio web de destino.
Haga doble clic en Reglas de seguimiento de solicitudes erróneas.
En el panel Acciones , seleccione Agregar.
En el Asistente para agregar regla de seguimiento de solicitudes con error, en la página Especificar contenido a seguimiento, seleccione Todo el contenido>Siguiente.
En la página Definir condiciones de seguimiento, actualice el campo Códigos de estado a 400-600 y seleccione Siguiente.
En la página Seleccionar proveedores de seguimiento, en Proveedores, active todas las casillas. En Áreas, asegúrese de que todas las casillas están seleccionadas para cada proveedor. En Nivel de detalle, seleccione Detallado. Seleccione Finalizar.
Habilite el seguimiento de solicitudes con error para el sitio y configure el directorio de archivos de registro:
En el panel Conexiones , expanda el nombre del equipo, expanda Sitios y, a continuación, seleccione Sitio web predeterminado.
En el panel Acciones , en Configurar, seleccione Seguimiento de solicitudes con error.
En el cuadro de diálogo Editar configuración de seguimiento de solicitudes con error del sitio web, active la casilla Habilitar, establezca el campo Directorio en %SystemDrive%\inetpub\logs\FailedReqLogFiles y establezca Número máximo de archivos de seguimiento en 1000.
Seleccione Aceptar.
Pasos para capturar un seguimiento y volcados de memoria de PerfView
Para capturar un seguimiento y volcados de perfView, siga los pasos descritos en las secciones siguientes.
Configuración de PerfView y Procdump antes del problema
Antes de que se produzca el problema, siga estos pasos para configurar PerfView y Procdump para la recopilación de datos:
Descargue ProcDump. Es un archivo ejecutable ligero que no requiere instalación y automatiza la recopilación de volcados.
Extraiga el archivo procdump.exe en una carpeta determinada del servidor.
Descargue la herramienta PerfView en el servidor. Es una herramienta de generador de perfiles que captura eventos de seguimiento de eventos para Windows (ETW) (no se requiere instalación).
Para que PerfView proporcione información útil, agregue El seguimiento como servicio de roles para IIS. Sin el seguimiento habilitado, un seguimiento ETW solo incluirá HTTP.sys información. Si no está seguro de si está instalado el servicio de rol de seguimiento , siga estos pasos:
- Abra Administrador del servidor y seleccione Administrar>agregar roles y características.
- En la ventana Asistente para agregar roles y características, seleccione Siguiente hasta llegar a la página Roles de servidor.
- Expanda Servidor web (IIS)>Estado y diagnóstico del>web y active la casilla Seguimiento.
- Seleccione Siguiente para los pasos posteriores y, a continuación, seleccione Instalar.
Abra la herramienta PerfView, seleccione el menú Recopilar y seleccione la opción Recopilar .
Active las casillas Zip, Merge y Thread Time (Hora de subproceso), como se muestra en la captura de pantalla siguiente. Modifique el campo MB circular a 2000:
Expanda la pestaña Opciones avanzadas y active la casilla IIS , como se muestra en la captura de pantalla siguiente.
Si ejecuta una aplicación ASP.NET Core, agregue la siguiente cadena en los proveedores adicionales:
*Microsoft-Extensions-Logging:4:5,Microsoft-AspNetCore-Server-Kestrel,System.Net.Http,System.Net.Sockets,System.Net.NameResolution,System.Threading.Tasks.TplEventSource::5,Microsoft-System-Net-Http,Microsoft-Windows-Application Server-Applications::Verbose
Nota:
No te pierdas el asterisco (
*
) al principio.
Recopilación de datos durante el problema
Durante el tiempo del problema, siga estos pasos para recopilar datos:
Seleccione el botón Iniciar recopilación en PerfView con las opciones de configuración que configuró en la sección Configurar PerfView y Procdump antes del problema .
Abra el Administrador de Internet Information Services (IIS) .
Seleccione el nombre del servidor (a la izquierda).
Haga doble clic en Procesos de trabajo para ver el identificador de proceso de los servicios. Por ejemplo:
Abrir símbolo del sistema como administrador.
Vaya a la carpeta donde se extrae procdump.exe mediante la ejecución
cd <path to procdump.exe>
en la ventana del símbolo del sistema .Ejecute el siguiente comando para capturar volcados consecutivos.
procdump.exe -accepteula -ma <PID of W3WP.exe)> -s 10 -n 3
Nota:
Reemplace por
<PID of W3WP.exe>
el PID real del proceso de W3WP.exe que encontró en el paso 4.- Puede especificar una ruta de acceso al final del comando para almacenar los volcados en una ubicación específica.
- Este comando capturará tres conjuntos de volcados a intervalos de 10 segundos.
Una vez que procdump recopila los volcados, detenga PerfView seleccionando Detener colección o espere dos y medio minutos para que se detenga automáticamente. Permitir que PerfView combine los datos recopilados, lo que puede tardar algún tiempo. Y generará un archivo Perfview.etl.zip . Si solicita símbolos, seleccione Usar servidores de símbolos de Microsoft.