Использовать глобальную (немую) страницу ошибок для всех ошибок ASP.NET MVC?

StackOverflow https://stackoverflow.com/questions/1038843

Вопрос

Я настроил и настроил ELMAH для регистрации всех моих ошибок в проекте ASP.NET MVC, над которым я работаю. Он будет использоваться небольшой группой пользователей, которым не нужно знать слишком много, поэтому всякий раз, когда возникает любая ошибка (404, InvalidOperation, Y2K ... что угодно!), Я просто хочу покажите им общий вид ошибок по умолчанию с инструкциями, чтобы позвонить в нашу службу поддержки и сидеть сложа руки.

ELMAH в порядке и работает, что наш персонал службы поддержки будет использовать для диагностики ошибок и регистрации / повышения заявок по мере необходимости. Моя проблема в том, чтобы показать мою страницу глобальной ошибки. Я использую решение, опубликованное здесь , чтобы гарантировать, что ELMAH и [HandleError] хорошо играют вместе.

Web.config настроен так:

<customErrors mode="On" />

Если я получу доступ к http: // application / Home / Index с ошибкой LINQ (последовательность не содержит элементы), затем мне показывают мой хороший, общий вид ошибок из /Shared/Error.aspx, но если я пытаюсь получить доступ к http: / / application / Fake / Broken , то есть 404, тогда я получаю обычный ASP.NET

Server Error in '/' Application.
The resource cannot be found.
Description: HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed, had its name changed, or is temporarily unavailable.  Please review the following URL and make sure that it is spelled correctly.

Requested URL: /Fake/Broken

Обе ошибки отлично регистрируются ELMAH.

Это было полезно?

Решение

Если вы просто хотите показать общую страницу с ошибкой, вы можете указать саму страницу:

<customErrors mode="On" defaultRedirect="error.htm" />

Это приведет к тому, что все необработанные исключения, страницы не найдены и т. д., чтобы показать ваш " error.htm " ;. Вы можете быть более точным в отношении кодов ошибок:

<customErrors mode="On">
  <error statusCode="404" redirect="notfound.htm"/>
</customErrors>

Другие советы

если вы используете iis 7, вам может понадобиться добавить это в ваш

<system.webServer>

раздел в конфигурационном файле

<httpErrors errorMode="Custom" existingResponse="PassThrough" />
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top