asp classic - Mensaje de error 500 detallado, ASP+IIS 7.5
asp-classic error-handling (12)
IIS 7.5, 2008rc2, ASP clásico, mensaje de error 500:
La página no se puede mostrar porque se ha producido un error interno en el servidor.
Necesito saber cómo configurar IIS para obtener un error más detallado.
Intenté establecer en verdadero todas las opciones de depuración en la configuración ASP.
Pero eso no funcionó. ¿Alguien puede ayudarme?
Después de probar Alex''s respuesta de Vaclav''s y Alex''s , todavía tenía que desactivar "Mostrar mensajes de error HTTP amigables" en IE
En web.config debajo
<system.webServer>
reemplace (o agregue) la línea
<httpErrors errorMode="Detailed"></httpErrors>
con
<httpErrors existingResponse="PassThrough" errorMode="Detailed"></httpErrors>
Esto se debe a que, de forma predeterminada, IIS7 intercepta los códigos de estado HTTP, como 4xx y 5xx, generados por las aplicaciones que se encuentran más adelante en la interconexión.
A continuación, active " Enviar errores al navegador " en la sección "ASP", y en " Páginas de error / Editar funciones ", seleccione "Errores detallados".
Además, otorgue permisos de escritura en la carpeta del sitio web al grupo incorporado IIS_IUSRS .
Haga doble clic en "ASP" en la pantalla de inicio del sitio en el administrador de IIS, expanda "Propiedades de depuración", active "Enviar errores al navegador" y haga clic en "Aplicar".
En "Páginas de error" en la pantalla de inicio, seleccione "500", luego "Editar configuración de funciones" y seleccione "Errores detallados".
Tenga en cuenta que se aplican los mismos pasos para IIS 8.0 (Windows Server 2012).
He llegado al mismo problema y corregido de la misma manera que Alex K.
Entonces, si "Enviar errores al navegador" no funciona, configure también esto:
Páginas de error -> 500 -> Editar configuración de características -> "Errores detallados"
También tenga en cuenta que si el contenido de la página de error enviada es bastante corto y está utilizando IE, IE ignorará felizmente el contenido útil enviado por el servidor y le mostrará su propia página de error genérico. Puede desactivar esto en las opciones de IE, o usar un navegador diferente.
Las personas que lo han probado TODO y que NO PUEDEN mostrar los detalles del error, como yo, es una buena idea verificar los diferentes niveles de configuración. Tengo un archivo de configuración en el nivel del sitio web y en el nivel de la aplicación (dentro del sitio web) compruebe ambos. Además, como resultó, tuve errores detallados deshabilitados en el nodo más alto en IIS (justo debajo de la página de inicio, tiene el mismo nombre que el nombre de la computadora del servidor web). Verifique las páginas de error allí.
Lo encontré.
Ejecute cmd como administrador, vaya a su carpeta system32 / inetsrv y ejecute:
appcmd.exe set config -section:system.webServer/httpErrors -allowAbsolutePathsWhenDelegated:true
Ahora puedo ver errores detallados de asp.
Si ejecuta el navegador en el servidor y prueba su url del proyecto con la ip local, ha recibido todos los errores de ese proyecto sin una página generalmente de error (por ejemplo, página de error 500).
Si está en un servidor remoto, puede configurar su archivo web.config de la siguiente manera:
<configuration>
<system.webServer>
<httpErrors errorMode="Detailed" />
<asp scriptErrorSentToBrowser="true"/>
</system.webServer>
<system.web>
<customErrors mode="Off"/>
<compilation debug="true"/>
</system.web>
TLDR: primero determine en qué parte de la tubería obtiene el error (realice un desplazamiento buscando capturas de pantalla de algo que se asemeje a su error), realice cambios para obtener algo nuevo, repita.
Primero determine qué mensaje de error está viendo en realidad.
Si está viendo el archivo ubicado aquí ...
% SystemDrive% / inetpub / custerr // 500.htm
... que generalmente se ve así:
... entonces sabrá que está viendo la página de error configurada actualmente en ** IIS ** y NO necesita cambiar la configuración de CustomErrors, la configuración de detalles de error de asp o la configuración del navegador "show friendly errors".
Es posible que desee ver la ruta de referencia anterior en lugar de confiar en mi captura de pantalla por si alguien la cambiara.
"Sí, veo el error descrito anteriormente ..."
En este caso, está viendo la configuración de < httpErrors > o en el Administrador de IIS son httpErrors -> Editar configuración de características. El valor predeterminado para esto es errorMode = DetailedLocalOnly en el nivel del nodo del servidor (a diferencia del nivel del sitio), lo que significa que aunque verá esta página de error configurada mientras está remota, debería poder iniciar sesión localmente en el servidor y ver el error que debería verse más o menos así:
Debería tener todo lo que necesita en ese momento para corregir el error actual.
"Pero no veo el error detallado ni siquiera navegando en el servidor"
Eso deja un par de posibilidades.
- El navegador que está utilizando en el servidor está configurado para usar un proxy en su configuración de conexión, por lo que no se ve como "local".
- En realidad, no está navegando hacia el sitio al que cree que está navegando; esto sucede comúnmente cuando hay un equilibrador de carga involucrado. Realice una prueba ping para ver si dns le proporciona una IP en el servidor o en otro lugar.
- La configuración httpErrors de su sitio está configurada para "Personalizado" solamente. Cámbielo a "DetailedLocalOnly". Sin embargo, si tiene un error de configuración, es posible que esto no funcione, ya que el httpErrors del nivel del sitio también es un elemento de configuración. En ese caso proceda al # 4
- El valor predeterminado para httpErrors para todos los sitios está establecido para "Personalizar". En este caso, debe hacer clic en el nodo del servidor de nivel superior en el Administrador de IIS (y no en un sitio en particular) y cambiar la configuración de httpErrors allí a DetailedLocalOnly. Si se trata de un servidor interno y no está preocupado por divulgar información sensible, también puede configurarlo en "Detallado", lo que le permitirá ver el error de clientes que no sean el servidor.
"Iniciar sesión en el servidor no es una opción para mí"
Cambie los httpErrors su sitio a "Detallado" para que pueda verlo de forma remota. Pero si no funciona, su error puede ser un error de configuración, vea el n. ° 3 inmediatamente arriba. Por lo tanto, es posible que se quede con el n. ° 4 y necesite a alguien de su equipo de servidores.
"No veo la página de error descrita arriba. Estoy viendo algo diferente"
Si ves esto ...
... y esperas ver algo como esto ...
... luego debe cambiar "Enviar errores al navegador" a verdadero en el Administrador de IIS, en Sitio -> IIS -> ASP -> Propiedades de depuración
Si ves esto ...
o esto...
... debe desactivar los errores amistosos en su navegador o usar la vista web de violín para ver la respuesta real frente a lo que su navegador elige mostrarle.
Si ves esto ...
... luego, los errores personalizados funcionan, pero no tiene una página de error personalizada (por supuesto, en este punto hablamos de .NET y no del ASP clásico). Debe cambiar su etiqueta customErrors en su web.config a RemoteOnly para ver en el servidor, o Off para ver de forma remota.
Si ve algo diseñado como su sitio, es probable que haya errores personalizados en On o RemoteOnly y que muestre la página personalizada (Views-> Shared-> Error.cshtml en MVC, por ejemplo). Dicho esto, es poco probable pero posible que alguien haya cambiado las páginas en IIS para httpErrors, así que vea la primera sección sobre eso.
También puede verificar que si cambió la carpeta de su sitio web principal ( c:/inetpub/wwwroot
) a otra carpeta, debe otorgar permiso de lectura al grupo IIS_IUSRS en la nueva carpeta.
Una cosa que nadie menciona es una corrección muy rápida y temporal, puede ver el error en el servidor local de ese servidor web.
intente configurar el valor del atributo httpErrors "existingResponse" en "PassThrough". El mío se estableció en "Reemplazar", lo que causaba que el YSOD no se mostrara.
<httpErrors errorMode="Detailed" existingResponse="PassThrough">