Альтернативные правила модуля перезаписи Web.Config для IIS7 - PullRequest
7 голосов
/ 29 мая 2009

Можно ли переместить правила, созданные модулем перезаписи IIS7, из корневого веб-конфигурации в его собственный файл веб-конфигурации, как вы можете это сделать с помощью настроек приложений, и если да, то как?

Ответы [ 3 ]

3 голосов
/ 14 июля 2009

Я не могу заставить его работать, но способ описан так:

<rewrite>
   <rewriteMaps configSource="external.config">
   </rewriteMaps>
</rewrite>

Затем в файле external.config добавьте свои правила:

<rewriteMaps>
  <rewriteMap ...
  ...
</rewriteMaps>

Вы должны сделать это со всем разделом rewriteMap s : согласно этому сообщению на форуме вы не можете сделать это с помощью rewriteMap: http://forums.iis.net/t/1154113.aspx

2 голосов
/ 12 сентября 2012

Это работает для меня в web.config:

<system.webServer>
    <rewrite>
      <rules configSource="web.rules.config" />
    </rewrite>
</system.webServer>

Одна крутая вещь заключается в том, что Редактор конфигурации IIS учитывает этот внешний файл при редактировании правил и записывает изменения обратно во внешний файл.

Если поставить:

<system.webServer>
    <rewrite configSource="web.rules.config" />
</system.webServer>

это не будет работать, вы получите ошибку HTTP 500.19 Внутренняя ошибка сервера:

Error Code:   0x8007000d
Config Error: Unrecognized attribute 'configSource'

Может ли кто-нибудь указать на справочную страницу MSDN по элементу rewrite и атрибуту configSource? В статье MSDN на system.webServer не упоминается элемент перезаписи, и я не могу найти страницу MSDN через Google.

0 голосов
/ 13 марта 2013

Я нашел документация по конфигурации , но, похоже, он не охватывает использование атрибута configSource.

Я предполагаю, что элемент <rules /> реализован в виде SectionInformation, который имеет свойство configSource , а элемент <rewrite /> является ConfigurationSection , который не имеет.

...