У меня есть два виртуальных каталога в веб-приложении Azure, и я подтвердил, что они правильно работают как каталоги приложений.
Корень веб-приложения не содержит ничего, кроме файла web.config с двумя правилами перезаписи, которые заставляют поддомены указывать на такие подпапки:
<rule name="App1 Subdomain Redirect to SubFolder">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^app1.myservice\.net$" />
</conditions>
<action type="Rewrite" url="/app1/{R:0}" />
</rule>
<rule name="App2 Subdomain Redirect to SubFolder">
<match url=".*" />
<conditions>
<add input="{HTTP_HOST}" pattern="^app2.myservice\.net$" />
</conditions>
<action type="Rewrite" url="/app2/{R:0}" />
</rule>
(Я понимаю, что это можно было бы написать более эффективно - я пытаюсь удалить как можно больше переменных.)
В каждом из виртуальных каталогов у меня есть еще один файл web.config, содержащий одно правило для добавления расширения:
<rule name="Add Extension">
<match url=".*" negate="false" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
<add input="{URL}" pattern="(.*)\.(.*)" negate="true" />
</conditions>
<action type="Rewrite" url="{R:0}.ashx" />
</rule>
Проблема, с которой я столкнулся, заключается в том, что правило «Добавить расширение» никогда не обрабатывается.
Если я удалю правило из файла конфигурации виртуального каталога и помещу его в корневой каталог, все будет хорошо. (Если я делаю это только для одного виртуального каталога, он отлично работает для этого каталога, а другой - нет. Если я сделаю это для обоих, тогда все правила будут обработаны.)
Если я удалю правило «Добавить расширение» и попробую другие правила, другие правила не будут обработаны, что указывает мне, что это не проблема, специфическая для этого конкретного правила.
Если я удалю все правила из конфигурации root, все правила в виртуальных каталогах будут обработаны.
У меня вопрос: сталкивался ли кто-нибудь еще с этим и что они сделали в качестве временного решения?
Насколько я понимаю, правила должны передаваться из корневого каталога в виртуальный так же, как и другие параметры конфигурации.
Поиски не помогли.
Ананд, похоже, столкнулся с той же проблемой на сайте, отличном от Azure IIS, но ответа предложено не было: http://forums.iis.net/t/1178488.aspx
Вопрос Zielu1 в чем-то похож, но снова не получил ответа: IIS Перезапись URL в дочернем виртуальном каталоге без перенаправления
Есть много других вопросов о перезаписи, в основном о синтаксисе и о том, как заставить их работать в целом, но мало о наследовании правил виртуальным каталогом.
Спасибо за помощь.