ASP.NET / Web.config: перенаправление customErrors только на 404 - PullRequest
8 голосов
/ 15 февраля 2012

У меня есть такой сценарий:

Пользователь заходит на мой сайт и переходит по ссылке, которой больше не существует, его следует перенаправить на пользовательскую страницу ошибок. (это работает)

Если пользователь делает что-то, что выдает ошибку, он должен увидеть Stacktrace и настоящую страницу ошибок.

Это мой текущий Web.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        <customErrors>
          <error statusCode="404" redirect="/errors/404.htm" />
        </customErrors>
        <compilation debug="true" strict="false" explicit="true" />
    </system.web>
</configuration>

с этой конфигурацией, 404 будет перенаправлен на правильный сайт, но HTTP 500 будет показан следующим образом:

Ошибка сервера в приложении '/'

Описание: на сервере произошла ошибка приложения. Текущие пользовательские настройки ошибок для этого приложения не позволяют удаленно просматривать подробности ошибки приложения (из соображений безопасности). Однако его могут просматривать браузеры, работающие на локальном сервере.

Подробно: Чтобы детали этого конкретного сообщения об ошибке можно было просматривать на удаленных компьютерах, создайте тег в файле конфигурации «web [.config», расположенном в корневом каталоге текущего веб-приложения. Для этого тега должен быть установлен атрибут «mode» «Off».

[...]

Но в этом случае я хочу показать трассировку стека.

Как я могу это сделать?

Примечание: Мы работаем в Linux с моно <- FastCGI -> конструкцией Lighttpd.

Ответы [ 2 ]

17 голосов
/ 19 апреля 2012

В следующих записях web.config условие not found (404) отправит пользователя на страницу PageNotFound.aspx

Use mode = "Off", и все (локальные и удаленные пользователи) увидят подробности ошибки.

<customErrors mode="Off">
     <error statusCode="404" redirect="~/errorPages/PageNotFound.aspx" />
</customErrors>

Используйте mode = "RemoteOnly", и локальные пользователи увидят подробные страницы ошибок с трассировкой стека и сведениями о компиляции.Удаленным пользователям будет предоставлена ​​страница GeneralError.aspx

<customErrors mode="RemoteOnly" defaultRedirect="~/errorPages/GeneralError.aspx">
     <error statusCode="404" redirect="~/errorPages/PageNotFound.aspx" />
</customErrors>
0 голосов
/ 16 июня 2014

Рэй Ван Халенс Ответ правильный, но это не было реальной проблемой.

Причиной не показа tracetrace является ошибка в самом моно.Нет другого способа, кроме как написать собственную страницу с ошибкой, где выводится трассировка стека.

...