В моем решении у меня есть 2 проекта, назовите их Foo
и Bar
. При развертывании Foo
является корневым сайтом (http://mycompany.com) и Bar
является подкаталогом (http://mycompany.com/sub).Как вы управляете файлами web.config в разных проектах в рамках одного и того же решения, когда вам нужны общие правила?
Когда я работаю над ними локально в IIS Express на своей локальной машине, мне нужно реплицировать вещи в web.config обоих проектов, так как я работаю над ними отдельно. Например, у меня есть одно из правил HMTL5 шаблонный для «очистки кэша» в моих правилах перезаписи:
<rewrite>
<rules>
<rule name="Cachebusting">
<match url="^(.+)\.\d+(\.(js|css|png|jpg|gif)$)" />
<action type="Rewrite" url="{R:1}{R:2}" />
</rule>
</rules>
</rewrite>
Если я просто оставить его в web.config для Foo
, а затем, когда я работаю на Bar
, это не и я получаю ошибки, так как переписывание не происходит. Поэтому я реплицировал разделы в web.config для обоих проектов.
Но когда я публикую решение Azure, я получаю конфликты из-за правил наследования, так как web.config для Foo
находится в корне.
Каков наилучший способ управления этим? Я попытался выполнить поиск по этой теме, но не смог найти эту конкретную проблему.
Update:
Мои applicationhost.config
для IIS Express как таковой:
<site name="Bar" id="3">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="E:\Code\mycompany\Bar\Bar" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:65052:localhost" />
</bindings>
</site>
<site name="Foo" id="4">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="E:\Code\mycompany\foo" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:50477:localhost" />
</bindings>
</site>
Я попытался его редактирования, чтобы оба приложения часть одного и того же сайта, с этими изменениями, но не повезло. Кажется побили все :)
<site name="Foo" id="3">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="E:\Code\mycompany\foo" />
</application>
<application path="/Sub" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="E:\Code\mycompany\Bar\Bar" />
</application>
<bindings>
<binding protocol="http" bindingInformation="*:65052:localhost" />
</bindings>
</site>
Могут ли обе сайты не иметь одного и того же связанного файла конфигурации? – Kane
Они не могут использовать один и тот же файл web.config, так как у подсайта есть настройки в нем, которые не применяются к родительскому сайту (например, строки подключений). – TMC