Usando web.config, configuré IIS para redirigir 500 errores a una página personalizada que está en mi aplicación.
<httpErrors errorMode="Custom"> <remove statusCode="500" /> <error statusCode="500" path="/Pages/ErrorPages/CustomError.asp" responseMode="ExecuteURL" /> </httpErrors>Esto está funcionando perfectamente y está redirigiendo a la página asp clásica mencionada cuando hay un error 500.
Ahora quiero capturar los detalles del error, como la ruta del archivo y el número de línea de mi página de error personalizada, que se muestra en la página de error estándar cuando configuramos "Enviar errores al navegador" en VERDADERO y las características de la página de error en "Errores detallados".
¿Cuáles son los métodos que puedo usar para resolver esto configurando IIS y usando javascript/jquery?
Como el error detallado anula el contenido de mi página de error personalizada, se me ocurrió un enfoque diferente para solucionar mi problema.
Habilité la regla de seguimiento de solicitudes fallidas en IIS y crea una carpeta de registro dentro de inetpub\logs\FailedReqLogFiles
Dentro de esa carpeta, crea un registro de errores (XML) separado para cada error. Ese XML tiene un formato como el siguiente.
<failedRequest url="" siteId="" appPoolId="" processId="" verb="GET" remoteUserName="" userName="" tokenUserName="NT AUTHORITY\IUSR" authenticationType="anonymous" activityId="" failureReason="STATUS_CODE" statusCode="500" triggerStatusCode="500" timeTaken="" xmlns:freb=""> <Event> <System></System><EventData></EventData><RenderingInfo></RenderingInfo><ExtendedTracingInfo></ExtendedTracingInfo> </Event> <Event> <System></System><EventData></EventData><RenderingInfo></RenderingInfo><ExtendedTracingInfo></ExtendedTracingInfo> </Event> ... ... </failedRequestRecorrí las etiquetas de eventos y seleccioné la que tenía Event>System>Level igual a 2. Ese es el evento que se muestra como un error cuando obtiene una vista previa del XML. Luego puede leer Event>EventData para Error LineNumber y Description.
Desde mi página de error personalizada, solicité información mediante una llamada XHR y la almacené en un campo oculto hasta que se solicitó.