2009-12-11 4 views
10

Я получил это в web.config:HttpError не будет показывать пользовательские страницы ошибок

<httpErrors errorMode="Custom"> 
    <remove statusCode="404" subStatusCode="-1" /> 
    <remove statusCode="500" subStatusCode="-1" /> 
    <error statusCode="404" prefixLanguageFilePath="" path="/Error/NotFound.aspx" responseMode="Redirect" /> 
    <error statusCode="500" prefixLanguageFilePath="" path="/Error/ServerError.aspx" responseMode="Redirect" /> 
</httpErrors> 

Но IIS все еще показывает встроенный в страницу ошибки.

Любые идеи?

ответ

5

Это, как я использую его, и это работает для меня, это выглядит очень похоже на директивы subStatusCode и ExecuteURL исключением.


<httpErrors> 
    <!--Remove inherited 500 error page setting --> 
    <remove statusCode='500' subStatusCode='-1'/> 
    <!--Override the inherited 500 error page setting with the 'My500.html' as its path--> 
    <error statusCode='500' subStatusCode='-1' prefixLanguageFilePath='' path='/My500.html' responseMode='ExecuteURL'/> 
</httpErrors> 
2

Кажется, что вы используете относительный URL-адрес сервера, попробуйте установить responseMode="ExecuteURL", from MSDN.

ExecuteURL

Обслуживает динамический контент (например, файл .asp), указанный в пути атрибут для пользовательской ошибки. Если responseMode имеет значение ExecuteURL, значение пути должно быть относительным сервером URL. Числовое значение 1.

Перенаправление

Перенаправление клиентских браузеров к URL-адрес, указанный в пути атрибут, который содержит файл пользовательских ошибок. Если responseMode настроен на перенаправление, значение пути должно быть абсолютным URL-адресом. Числовое значение 2.

19

Вам также может понадобиться установить атрибут existingReponse в элементе httpErrors так:

<httpErrors errorMode="Custom" existingResponse="Replace"> 
    <clear /> 
     <error statusCode="404" prefixLanguageFilePath="" path="/ErrorHandler.aspx" responseMode="ExecuteURL" /> 
    <error statusCode="500" prefixLanguageFilePath="" path="/ErrorHandler.aspx" responseMode="ExecuteURL" /> 
</httpErrors> 
+0

Это то, что вызывало проблемы с новейшим Orchard 1.4, приветствиями. – Sarkie

+0

@Kiquenet http://www.iis.net/configreference/system.webserver/httperrors Не уверен, но Auto решил мою проблему. – Ernesto

+0

Что такое исходный код для *** ErrorHandler.aspx ***? – Kiquenet

0

Убедитесь, что у вас есть соответствующие функции настройки для перенаправления Ошибка страницы в IIS. Чтобы проверить это, на странице «Страницы ошибок» в диспетчере IIS нажмите «Редактировать настройки параметров» и убедитесь, что Пользовательские страницы ошибок проверяется, если вы тестируете перенаправления с самого веб-сервера. Если вы тестируете удаленно, вы можете оставить Подробные ошибки для локальных запросов и настраиваемых страниц ошибок для удаленных запросов. По-видимому, это опция по умолчанию в моей тестовой среде.

3

Если вы используете ExecuteURL, путь страницы пользовательской ошибки должен находиться в том же пуле приложений, что и само приложение.

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

Смежные вопросы