Исключения, выброшенные в OnActionExecuting
, будут обрабатываться глобальным HandleErrorAttribute
. Вам просто нужно убедиться, что в вашем файле web.config он включен:
<customErrors mode="On" />
Говорят, что вы говорили о AuthenticateAttribute
и OnActionExecuting
событии. Эти два понятия несовместимы. Если вы пишете пользовательский атрибут авторизации, вы, вероятно, должны извлечь из AuthorizeAttribute
и переопределить метод AuthorizeCore
для аутентификации и метод HandleUnauthorizedRequest
для обработки неавторизованного случая.
У вас также есть возможность, если вы не хотите использовать глобальный HandleErrorAttribute
для выполнения следующих действий вместо создания исключений:
filterContext.Result = new ViewResult
{
ViewName = "~/Views/Shared/401.cshtml"
};
Установка результата внутри атрибута действия приведет к короткому замыканию при выполнении действия контроллера и непосредственно отобразит представление.