Mam niestandardowy filtr wyjątków, którego używam do przechwytywania niestandardowego wyjątku, który napisałem, ale z jakiegoś powodu, kiedy wyrzucam wyjątek, nigdy nie dociera do filtra . Zamiast tego po prostu dostaję błąd, że mój wyjątek nie był obsługiwany przez kod użytkownika. Czy ktokolwiek może udzielić porady/pomocy, jak powinienem mieć tę konfigurację? Odpowiedni kod jest poniżej:Niestandardowy filtr wyjątków nie jest trafiony w asp.net MVC
// controller
[CustomExceptionFilter]
public class SomeController : Controller
{
public SomeController()
{
}
public ActionResult Index()
{
SomeClass.SomeStaticMethod();
return View();
}
}
to kontroler z atrybutem customexception
// some class (where exception is being thrown)
public class SomeClass
{
public static void SomeStaticMethod()
{
throw new MyCustomException("Test");
}
}
że jest klasa (dla mojego testu), który zgłasza wyjątek (ja również próbował wyrzucić je bezpośrednio na kontrolerze).
// 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
}
}
}
to niestandardowy filtr wyjątków ... nigdy nie zostanie osiągnięty, gdy kod zostanie wykonany, a wyjątek zostanie zgłoszony. Zamiast tego otrzymuję błąd wspomniany powyżej. Wszystko, co przeczytałem, wskazuje, że jest to właściwy sposób ustawienia, ale kiedy umieszczam punkty przerwania w moim niestandardowym filtrze, nigdy nie jest on trafiony ...
Czego mi tu brakuje?
TIA
Mam nadzieję, że nadal to robisz, mimo że ma 4 dni. Właśnie wróciłem do tego i dodałem linię kodu wewnątrz mojego bloku if .... nigdy nie jest osiągalny, ponieważ moja metoda OnException nigdy nie jest wywoływana. Czy jest gdzieś flaga, którą muszę ustawić (może w web.config) lub coś, co mówi aplikacji o obsłudze wyjątków w tym filtrze? Nadal dostaję błąd w "throw new MyCustomException (" Test ");" linia wskazująca, że wyjątek był nieobsługiwany przez kod użytkownika. – Kyle
Nie musiałem ustawiać żadnych flag ani dodawać niczego do web.config. To po prostu działało.Po przejściu w trybie debugowania: Najpierw wyjątek jest generowany i tam się łamie.Po naciśnięciu play i przechodzi do mojego punktu przerwania w OnException.Czy próbowałeś przejść przez tryb debugowania? –
Zakładam, że wszystko znajduje się w tej samej przestrzeni nazw i masz tylko jeden wyjątek CustomExceptionFilter i CustomException. –