Как заставить настраиваемые страницы ошибок работать для классического ASP с помощью интегрированного конвейера IIS 7

Я работаю над веб-сайтом с устаревшими классическими страницами ASP (которые при необходимости преобразуются в ASP.NET) и новыми страницами ASP.NET. Использование интегрированного конвейера IIS 7 очень помогло в нашей конфигурации. Например, мы смогли заставить аутентификацию форм работать автоматически с классическими страницами ASP, просто настроив соответствующие разделы файла web.config (т. Е. Никаких изменений не требовалось для классических страниц ASP, для получения дополнительной информации см. это).

Мой коллега считает, что настраиваемые страницы ошибок, указанные в разделе web.config ‹customErrors›, также должны автоматически применяться к классическим страницам ASP, но для нашего веб-сайта это работает только для страниц ASP.NET. Мне также не удалось найти никакой информации, описывающей возможность применения настраиваемых страниц ошибок к классическому ASP с интегрированным конвейером IIS 7.

Можно ли применить настраиваемые страницы ошибок к классическим страницам ASP в файле web.config для веб-сайта, работающего под IIS7 со встроенным конвейером? Если да, то как?


person harrije    schedule 06.10.2010    source источник


Ответы (1)


Страницы настраиваемых ошибок IIS7 обрабатываются в разделе конфигурации <system.webServer>, а не в разделе <customErrors> раздела <system.web>, который применяется только к ASP.NET:

<configuration>
    <system.webServer>
        <httpErrors>
            <error 
               statusCode="500" 
               subStatusCode="100" 
               path="/500errors.asp" 
               responseMode="ExecuteURL" />
        </httpErrors>
    </system.webServer>
</configuration>

Остерегайтесь этих настроек, конфликтующих с пользовательскими ошибками ASP.NET. Если вы используете .NET 3.5 и выше, вы можете установить _ 5_ в коде программной части страницы ошибок ASP.NET (или контроллере ошибок при использовании MVC), чтобы предотвратить переопределение IIS страниц ошибок ASP.NET:

Response.TrySkipIisCustomErrors = true // ASP.NET Forms

В этой статье Рика Страла эта проблема объясняется более подробно:

Страницы ошибок IIS 7, содержащие более 500 ошибок

person Kev    schedule 06.10.2010
comment
Это очень полезная информация. Один вопрос: есть ли способ не указывать statusCode, скажем, чтобы указать, какую страницу использовать по умолчанию? - person harrije; 07.10.2010
comment
@harrije - вы можете установить defaultPath на <httpErrors>. Для получения дополнительной информации см .: http://www.iis.net/ConfigReference/system.webServer/httpErrors - person Kev; 07.10.2010