używam filtru do wyjątków zgłaszanych przez działania, który wygląda jak ten log:ASP.Net MVC - jak obsługiwać wyjątek w akcji JSON (zwracać informacje o błędzie JSON), ale także publikować wyjątek dla filtrów?
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
if (filterContext.Exception != null)
{
//logger.Error(xxx);
}
base.OnActionExecuted(filterContext);
}
Teraz chciałbym obsługiwać wszystkie moje działania JSON powrócić wynik JSON z informacjami wyjątków. Pozwala to na wywołania Ajax w celu ustalenia, czy na serwerze wystąpił błąd, zamiast odbierać źródło strony błędu, które jest bezużyteczne dla Ajax. I zostały wdrożone tej metody dla działań JSON w moim AppControllerBase:
public ActionResult JsonExceptionHandler(Func<object> action)
{
try
{
var res = action();
return res == null ? JsonSuccess() : JsonSuccess(res);
}
catch(Exception exc)
{
return JsonFailure(new {errorMessage = exc.Message});
}
}
Działa to miłe, ale oczywiście catch() oświadczenie zapobiega wszystkie filtry z obsługi wyjątku, ponieważ nie ma wyjątków rzucony faktycznie. Czy jest jakiś sposób, aby pozostawić wyjątek dostępny dla filtrów (filterContext.Exception)?
opublikuj swoją JsonFailure && JsonSuccess – ari