Почему IIS Express использует <system.web>, а не <system.webServer>?

Использул Cassini, но переключился на IIS Express. Моя первоначальная мысль заключалась в том, что я мог удалить все , кроме таких вещей, как:

<authentication mode="Forms">
 </authentication>

Мои предыдущие customErrors были настроены так:

<customerrors mode="On" defaultredirect="/ServerError">
 </customerrors>

Я удалил этот элемент customErrors, когда переключился на IISExpress. Теперь 404 больше не перенаправляются на мою приятную страницу "NotFound".

AppPool, используемый для моего сайта, Clr4IntegratedAppPool, который позволяет мне знать, что он не использует Classic.

Почему IISExpress настолько зависит от system.web, тогда как IIS 7.5 использует system.webServer?

1 ответ

Ну, я попробовал несколько разных вещей:

  • Изменен existingResponse на PassThrough, как указано здесь

Неа!

  • Установите TrySkipIisCustomErrors= false, как указано в комментариях здесь

Нота!

Я закончил работу, просто изменив existingResponse на Replace.

  • Кто знал!

Вот как выглядит system.webServer:

<httperrors errormode="Custom" existingresponse="Replace">
 <remove statuscode="404" substatuscode="-1">
 <error statuscode="404" path="/NotFound" responsemode="ExecuteURL">
 <remove statuscode="500" substatuscode="-1">
 <error statuscode="500" path="/ServerError" responsemode="ExecuteURL">
 </error></remove></error></remove></httperrors>

Почему это решение не имеет никакого смысла

Заменить - это значение делает пользовательский модуль ошибок всегда заменять информация об ошибках с текстом, генерируемым пользовательским модулем ошибок. Если existingResponse установлен на "Заменить", ошибки/исключения, созданные Asp.Net/WCF заменяются ошибками IIS7.

http://blogs.iis.net/ksingla/archive/2008/02/18/what-to-expect-from-iis7-custom-error-module.aspx

licensed under cc by-sa 3.0 with attribution.