Я использую ASP.NET Core. Один из моих контроллеров звонит в службы, которые бросают различные исключения. Я хочу обрабатывать их в фильтре исключений (не промежуточном программном обеспечении).Перенаправление из фильтра исключений
public class MyHandlerAttribute : ExceptionFilterAttribute
{
public override void OnException(ExceptionContext c)
{
if (c.Exception is FooException) {
// redirect with arguments to here
}
else if (c.Exception is FooException) {
// redirect with arguments to there
}
else {
// redirect to main error action without arguments, as 500
}
base.OnException(c);
}
}
В отличие от фильтров действий, фильтр исключений не дает мне доступ к Controller
, так что я не могу сделать c.Result = controller.RedirectTo...()
.
Итак, как мне перенаправить на мое действие с ошибкой?
Второй не работает. Первый работает, если вы также устанавливаете 'context.Exception = null;' Однако этот тип перенаправления не позволяет мне указывать аргументы - это возможно? – grokky
Также работает второй вариант. Но вы также должны установить 'context.ExceptionHandled = true;'. – juunas
@juunas Если я это сделаю, тогда он просто сделает пустую страницу ... Странно! – grokky