Comenzaré con, sí, hemos creado y estamos utilizando un filtro de excepción que hereda de ExceptionFilterAttribute. Se registra en el inicio de la configuración al inicio de la aplicación justo después de nuestro filtro de identidad y funciona prácticamente como se esperaba si ocurre un error en algún lugar dentro de nuestra API.Gestión de excepciones ASP.NET MVC Web API
Dicho esto, estoy buscando una forma de manejar los errores que ocurren antes de que llegue a la API.
Razonamiento: Nunca queremos devolver un error de YSOD y/o IIS HTML. SIEMPRE queremos presionar un filtro/controlador de excepciones personalizado para que podamos manejar el registro correctamente y devolver una respuesta JSON al usuario.
En este momento, al usar Fiddler para realizar una solicitud, puedo adjuntarme al proceso w3wp.exe y ver que la solicitud apriete el método Application_BeginRequest en global.asax. Después de eso, solo devuelve una respuesta de 500. Nunca se rompe en el código con una excepción o golpea cualquiera de mis puntos de quiebre después de eso. Parece que está devolviendo un error de IIS. Nunca queremos que esto suceda. Necesitamos la capacidad de detectar todas estas excepciones de "bajo nivel", registrarlas y devolver algo significativo para el usuario.
¿Hay algo que podamos hacer para manejar errores antes, lo que parece estar afectando al código ASP.NET MVC Web API?
Esto se siente mal de alguna manera. ¿Estás arrojando excepciones en alguna biblioteca? ¿Por qué no simplemente atrapar la excepción en el controlador y devolver una vista de error de su elección? –
Esto está utilizando ASP.NET MVC Web API, por lo que no estamos devolviendo vistas desde los controladores. Devolvemos respuestas JSON/XML. También menciono en mi pregunta que necesito una forma de manejar excepciones ANTES de que lleguen a los controladores. En este momento tenemos un ExceptionFilter que detecta excepciones en cualquier lugar una vez que estamos dentro del controlador, así no tenemos que tener try/catch en cada acción. – phreak3eb
No creo que entiendo completamente tu pregunta. ¿Qué tipo de errores estás tratando de atrapar exactamente? – cecilphillip