Как показать пользовательскую страницу ошибок вместо страницы ошибок iis 403? - PullRequest
0 голосов
/ 20 сентября 2019

my web.config:

 <customErrors mode="Off" redirectMode="ResponseRewrite" defaultRedirect="~/Pages/Error/DefaultError.aspx">
      <error statusCode="404" redirect="~/Pages/Error/Page404.aspx" />
      <error statusCode="500" redirect="~/Pages/Error/DefaultError.aspx" />
    </customErrors>

<httpErrors existingResponse="Replace" defaultResponseMode="ExecuteURL" errorMode="Custom"> //also used other options for existingResponse
    <remove statusCode="403"/>
    <error statusCode="403" path="~/Pages/Error/PI403.aspx" responseMode="ExecuteURL"/>
</httpErrors>

и вот мой метод Application_error в файле global.asax.cs:

Server.ClearError(); //clear the error so we can continue onwards

var errorPage = "~/Pages/Error/DefaultError.aspx";
var httpException = ex as HttpException;
if (httpException != null && httpException.GetHttpCode() == (int)HttpStatusCode.NotFound)
    {
        errorPage = "~/Pages/Error/Page404.aspx";
    }
Response.Redirect(errorPage);

У меня есть файл Logs в проекте, ноэтот файл использует только логирование.Если я использую ссылку браузера myURL / Logs, я получаю страницу ошибки IIS 403.14.Если я пишу myURL / asdeds, я получаю свою страницу с ошибкой (в моем проекте чего-то такого не существует).Потому что исключение 403 не вызывает Application_Error.Я хочу показать свою пользовательскую страницу ошибок для всех исключений.Я должен увидеть свою пользовательскую страницу ошибки, когда я записываю свою часть URL / журналов в URL.

, а также я устанавливаю свойство TrySkipIisCustomError в Application_BeginRequest

HttpContext.Current.Response.TrySkipIisCustomErrors = true;

1 Ответ

0 голосов
/ 24 сентября 2019

Поскольку ошибка 403.14 - запрещенная, это ошибка IIS, а не ошибка asp.net.Он использует http-обработчик StaticFile, а не http-обработчик asp.net.Поэтому ошибка Application_error не будет запущена, когда вы столкнулись с этой ошибкой.

Единственный способ изменить страницу настраиваемой ошибки - использовать страницу настраиваемой ошибки IIS.

Как говорит Лекс, страница настраиваемой ошибки IISне поддерживает "~".Он будет автоматически соответствовать корневому пути вашего веб-приложения.Таким образом, вы можете использовать приведенные ниже настройки конфигурации.

<httpErrors existingResponse="Replace" defaultResponseMode="ExecuteURL" errorMode="Custom"> //also used other options for existingResponse
    <remove statusCode="403"/>
    <error statusCode="403" path="/Pages/Error/PI403.aspx" responseMode="ExecuteURL"/>
</httpErrors>

Также вы можете открыть консоль управления IIS и использовать окно интерфейса пользователя для изменения настроек.

enter image description here

...