В моем методе действия я пытаюсь проверить, есть ли у пользователя доступ к ресурсу, который он запрашивает.Если нет, я хочу выбросить исключение.
Если я просто выброшу новое исключение («вы не авторизованы»), оно работает отлично.Затем отображается мое настраиваемое представление ошибок.
Если, однако, я выбрасываю новое исключение HttpException (403, «вы не авторизованы»), оно обходит мое настраиваемое представление ошибок и отображает общую страницу ошибки белого цвета, в которой говорится:
"При обработке вашего запроса возникла исключительная ситуация. Кроме того, возникла другая исключительная ситуация при выполнении пользовательской страницы ошибок для первого исключения. Запрос был прерван."
Мой раздел пользовательских ошибок в web.configвыглядит примерно так:
<customErrors mode="On" defaultRedirect="Error">
<error statusCode="404" redirect="NotFoundError" />
</customErrors>
У меня есть глобально зарегистрированный CustomHandleErrorAttribute, метод OnException которого выглядит следующим образом:
public override void OnException(ExceptionContext filterContext)
{
base.OnException(filterContext);
LogError(filterContext);
if (!HttpContext.Current.Request.IsLocal)
{
if (filterContext.HttpContext.Request.RawUrl != "/")
{
emailError(filterContext);
}
}
}
Наконец, я использую ASP.NET Identity для аутентификации / авторизации;Я не уверен, имеет ли это значение.
Спасибо.
Аарон