Tengo un filtro de excepción personalizado que estoy utilizando para capturar una excepción personalizada que escribí, pero por alguna razón cuando lanzo mi excepción, nunca llega al filtro . En su lugar, me sale un error de que mi excepción no fue manejada por el código de usuario. ¿Alguien puede proporcionar algún consejo/asistencia sobre cómo debería tener esto configurado? código en cuestión es el siguiente:Filtro de excepción personalizado no se ve afectado en asp.net MVC
// controller
[CustomExceptionFilter]
public class SomeController : Controller
{
public SomeController()
{
}
public ActionResult Index()
{
SomeClass.SomeStaticMethod();
return View();
}
}
que es el controlador con el atributo customexception
// some class (where exception is being thrown)
public class SomeClass
{
public static void SomeStaticMethod()
{
throw new MyCustomException("Test");
}
}
que es la clase (para mi prueba) que produce la excepción (También he intentado tirar directamente en el controlador)
// Custom exception filter (want this to catch all unhandled exceptions)
public class CustomExceptionFilter : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
if (filterContext.Exception.GetType() == typeof(MyCustomException))
{
// do stuff
}
}
}
ese es el filtro de excepción personalizado ... nunca se llega cuando se ejecuta el código y se produce la excepción. En cambio, aparece el error mencionado anteriormente. Todo lo que he leído indica que esta es la forma correcta de configurar esto, pero cuando pongo puntos de interrupción en mi filtro personalizado, nunca se golpea ...
¿Qué me falta aquí?
TIA
Afortunadamente todavía estás siguiendo esto a pesar de que tiene 4 días. Acabo de volver a esto y agregué tu línea de código dentro de mi bloque if ... nunca se llegó, ya que nunca se llama a mi método OnException. ¿Hay algún indicador que deba configurar (quizás en web.config) o algo para decirle a la aplicación que maneje las excepciones en este filtro? Todavía recibo el error en la línea "throw new MyCustomException (" Test ");" que indica que la excepción no fue controlada por el código de usuario. – Kyle
No necesité establecer ninguna marca ni agregar nada a web.config. Simplemente funcionó. Cuando paso en el modo de depuración: Primero se lanza la excepción y se rompe allí. Luego presiono play y pasa a mi punto de interrupción en OnException. ¿Has intentado entrar en el modo de depuración? –
Supongo que todo está en el mismo espacio de nombres y solo tiene una CustomExceptionFilter y CustomException. –