Внедрение страницы пользовательской ошибки на веб-сайте ASP.Net

У меня есть сайт ASP.Net, и я хочу использовать страницу пользовательских ошибок. Я поместил следующий код в свой web.config

<customErrors mode="On" defaultRedirect="~/error.aspx">
    <error statusCode="404" redirect="~/error.aspx" />
</customErrors>

Проблема в том, что когда я перехожу к URL-адресу, который не существует, по-прежнему используется страница ошибки 404, указанная в диспетчере IIS.

Вопрос: Как я могу использовать страницу error.aspx, которую я создал? Почему настройки в диспетчере IIS переопределяют web.config?

Ответы

Ответ 1

Попробуйте этот путь, почти такой же.. но это то, что я сделал, и работаю.

<configuration>
    <system.web>
       <customErrors mode="On" defaultRedirect="apperror.aspx">
          <error statusCode="404" redirect="404.aspx" />
          <error statusCode="500" redirect="500.aspx" />
       </customErrors>
    </system.web>
</configuration> 

или попробуйте изменить страницу ошибки 404 из настроек IIS, если это необходимо срочно.

Ответ 2

Существует 2 способа настройки пользовательских страниц ошибок для сайтов ASP.NET:

  1. Диспетчер информационных служб Интернета (IIS)
  2. файл web.config

В этой статье объясняется, как сделать каждый:

Причина, по которой ваша страница error.aspx не отображается, может быть в том, что в вашем файле web.config есть ошибка. Попробуйте это вместо:

<configuration>
   <system.web>
      <customErrors defaultRedirect="error.aspx" mode="RemoteOnly">
         <error statusCode="404" redirect="error.aspx"/>
      </customErrors>
   </system.web>
</configuration>

Возможно, вам потребуется убедиться, что Error Pages в IIS Manager - делегирование компонентов установлены на чтение/запись:

IIS Manager: Feature Delegation panel

Кроме того, этот ответ может помочь вам настроить файл web.config:

Ответ 3

<customErrors defaultRedirect="~/404.aspx" mode="On">
    <error statusCode="404" redirect="~/404.aspx"/>
</customErrors>

Код выше предназначен только для "Ошибка страницы не найден-404", если известно расширение файла (.html,.aspx и т.д.)

Кроме того, вы также установили ошибки клиента для расширения, не известные или неверные, как

.aspwx или .vivaldo. Вы должны добавить настройки httperrors в web.config

<httpErrors  errorMode="Custom"> 
       <error statusCode="404" prefixLanguageFilePath="" path="/404.aspx"         responseMode="Redirect" />
</httpErrors>
<modules runAllManagedModulesForAllRequests="true"/>

он должен находиться внутри <system.webServer> </system.webServer>

Ответ 4

<system.webServer>     
<httpErrors errorMode="DetailedLocalOnly">
        <remove statusCode="404" subStatusCode="-1" />
        <error statusCode="404" prefixLanguageFilePath="" path="your page" responseMode="Redirect" />
    </httpErrors>
</system.webServer>

Ответ 5

Это орфографическая ошибка в вашем закрывающем теге, т.е.

</CustomErrors> instead of </CustomError>?