Получение IIS7 «одна строка» ошибка при использовании пользовательских настроек ошибок в web.config - PullRequest
5 голосов
/ 06 июля 2010

У меня есть приложение ASP.NET MVC, которое возвращает 404, а иногда и 500 кодов состояния в различных подходящих точках.

Response.StatusCode = (int)HttpStatusCode.NotFound;

Когда я устанавливаю один из этих кодов состояния, я также соответствующим образом устанавливаю свойство TrySkipIisCustomErrors.

Response.TrySkipIisCustomErrors = true

Что я хотел бы сделать сейчас, так это настроить IIS для прохождения этих ошибок, которые я сам настраиваю, и перехватывать любые другие ошибки, которые могут возникнуть (например, 404-е для статических файлов, когда я не отправляю запросы в ASP .NET, или 500 ошибок в моем приложении (где предположительно свойство TrySkipIisCustomErrors не будет установлено платформой).

Мой узел system.webServer / httpErrors выглядит так:

<httpErrors existingResponse="Auto" errorMode="Custom">
</httpErrors>

Это возвращает мои собственные ошибки ASP.NET, в которых я установил TrySkipIisCustomErrors = true, и стандартные страницы ошибок IIS для неперехваченных 500 с, статический файл 404 с и т. Д.

Затем я попытался изменить его так:

<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="/Skins/Shared/Error/Error.html" defaultResponseMode="ExecuteURL">
  <clear />
</httpErrors>

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

Полагаю, это связано с ошибкой в ​​моей конфигурации, но я не могу понять, что я делаю неправильно!

Я также пробовал этот подход, с теми же результатами:

<httpErrors existingResponse="Auto" errorMode="Custom" defaultPath="Skins\Shared\Error\Error.html" defaultResponseMode="File">
  <clear />
</httpErrors>

Та же проблема возникает даже при установке перенаправления на совершенно другой URL.

Я использую эту страницу среди других для справки: http://blogs.iis.net/ksingla/archive/2008/02/18/what-to-expect-from-iis7-custom-error-module.aspx.

Файл ошибок определенно существует, и я могу напрямую открыть его с помощью браузера.

Кроме того, я не совсем уверен, что мне следует делать с узлом system.Web \ customErrors. Это настройка только для IIS6 или она как-то связана с ASP.NET? В настоящее время я не включаю его в свой web.config.

Ответы [ 2 ]

1 голос
/ 23 марта 2013

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

Попробуйте полностью удалить элемент

<httpErrors>

из web.config.

1 голос
/ 01 мая 2012

добавьте это к вашему узлу system.webserver.Он сообщит IIS, что ASP.Net позволяет обрабатывать ошибки.

<httpErrors existingResponse="PassThrough" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...