ASP.NET MVC - добавление 403 или 401 в метод действия позволяет обойти пользовательское представление ошибок - PullRequest
0 голосов
/ 05 октября 2018

В моем методе действия я пытаюсь проверить, есть ли у пользователя доступ к ресурсу, который он запрашивает.Если нет, я хочу выбросить исключение.

Если я просто выброшу новое исключение («вы не авторизованы»), оно работает отлично.Затем отображается мое настраиваемое представление ошибок.

Если, однако, я выбрасываю новое исключение 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 для аутентификации / авторизации;Я не уверен, имеет ли это значение.

Спасибо.

Аарон

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...