IIS7: сопоставление с подстановочными знаками и документ по умолчанию - PullRequest
2 голосов
/ 31 мая 2010

Я перевожу веб-сайт IIS6 на IIS7 и сталкиваюсь с известной проблемой смешивания глобального обработчика ASP.NET при использовании документов по умолчанию. Подробности смотрите здесь:

http://blogs.msdn.com/b/david.wang/archive/2005/10/15/why-wildcard-application-mapping-can-disable-default-document-resolution.aspx

Прямо сейчас, в IIS7, у меня настроены следующие модули, где "Everything" имеет global.asax, переписывающий множество запросов.

[... All default app modules ...]
<add name="StaticFile" path="*.*" verb="*" type="" modules="StaticFileModule,DefaultDocumentModule,DirectoryListingModule" scriptProcessor="" resourceType="Either" requireAccess="Read" allowPathInfo="false" preCondition="" />
<add name="Everything" path="*" verb="GET,HEAD,POST,DEBUG" type="System.Web.UI.SimpleHandlerFactory" modules="ManagedPipelineHandler" scriptProcessor="" resourceType="Unspecified" requireAccess="Script" allowPathInfo="false" preCondition="integratedMode" />

В этой конфигурации документы по умолчанию не работают из-за подстановочного знака «StaticFile». Мой набор ограничений примерно такой:

  • Все нестатические запросы обрабатываются global.asax "Everything" для перезаписи.
  • Не изменяйте код global.asax, потому что он сложный (мы приведем его в порядок позже).
  • Наличие документов по умолчанию для существующих каталогов
  • Не обрабатывать статические файлы в «Все»
  • Использовать интегрированный режим IIS7

В настоящее время я понимаю, что это невозможно сделать с помощью этой настройки. Таким образом, одной из торговых операций будет перемещение кода перезаписи global.asax в модуле IHttpModule, зарегистрированном после статических файлов. Что печально, так это то, что требуется отдельная сборка, а не редактирование проекта напрямую. И я не знаю, как он будет вести себя с Кассини.

Что ты думаешь? Является ли IHttpModule правильным подходом? Может ли быть проще?

...