Запрет IIS 7.5 от отображения страниц ошибок по умолчанию с помощью web.config - PullRequest
8 голосов
/ 13 июля 2011

Я пытаюсь добавить пользовательские страницы ошибок в свое веб-приложение.До сих пор я добавил это в мой файл web.config под элементом:

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

Это прекрасно работает для ошибок, которые .NET затрагивает, например, URL, который содержит расширение .aspx.Однако я также хочу, чтобы пользовательские ошибки отображались для URL-адреса, например www.example.com/dasda

. В настоящее время, когда я запрашиваю страницу, подобную приведенной выше, IIS 7.5 отображает свое собственное сообщение об ошибке.Я добавил это под элементом:

<httpErrors >
    <remove statusCode="404" subStatusCode="-1" />
    <error statusCode="404" path="~/404.aspx" responseMode="ExecuteURL"  />
    <remove statusCode="500" subStatusCode="-1" />
    <error statusCode="500" path="~/500.aspx" responseMode="ExecuteURL" />
</httpErrors>

Я думал, что это заставит IIS отображать пользовательскую страницу ошибки вместо страниц по умолчанию, но это не так.

Мне известно, что я могу установить пользовательскую страницу ошибок в самом IIS, но идеальным решением для моей ситуации было бы настроить ее в файле web.config.

Я попытался добавить ее на свои пользовательские страницы ошибокдля события Page_Load, как было предложено здесь :

            Response.TrySkipIisCustomErrors = true;

Однако это не помешало отображению страницы IIS по умолчанию вместо моей пользовательской страницы ошибок.Я также попробовал то, что предлагается здесь :

<httpErrors >
    <remove statusCode="404" subStatusCode='-1' />
    <error statusCode="404" path="~/404.aspx" prefixLanguageFilePath='' responseMode="Redirect"  />
    <remove statusCode="500" subStatusCode='-1' />
    <error statusCode="500" path="~/500.aspx" prefixLanguageFilePath='' responseMode="Redirect" />
  </httpErrors>

Но это также не сработало.

Так есть ли способ запретить IIS отображать страницы ошибок по умолчанию путем настройки параметров в файле web.config?

Ответы [ 2 ]

14 голосов
/ 14 июля 2011

Проблема, с которой я столкнулся, заключалась в том, что по умолчанию имеется атрибут errorMode со следующими параметрами: подробный локальный, пользовательский или подробный.

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

Сработали следующие параметры конфигурации:

<httpErrors errorMode="Custom">
    <remove statusCode="404" subStatusCode='-1' />
    <remove statusCode="500" subStatusCode='-1' />
    <error statusCode="404" path="/404.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL"  />
    <error statusCode="500" path="/500.aspx" prefixLanguageFilePath="" responseMode="ExecuteURL" />
  </httpErrors>

Параметр errorMode = "Custom" удобен для проверки правильности работы пользовательских страниц, но, вероятно, он более удобен, если его не указывать или явно установить в errorMode = "DetailLocalOnly" для целей отладки.

0 голосов
/ 13 июля 2011

Я думаю, вам нужно заставить IIS использовать CustomErrorModule для любого ресурса, запрошенного пользователем. Попробуйте добавить ниже в вашу веб-конфигурацию

 <modules>
      <add name="CustomErrorModule" type="customErrorModule" preCondition="" />
 </modules>

Посмотрите также ссылку ниже

https://serverfault.com/questions/53712/in-iis-7-how-do-i-set-up-a-default-error-document-for-any-error

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