In my solution, I have 2 projects, call them Foo
and Bar
. When deployed, Foo
is the root site (http://mycompany.com) and Bar
is a sub-directory (http://mycompany.com/sub).
When I work on them locally in IIS Express on my local machine, I need to replicate things into web.config of both projects since I work on them separately. For example, I have one of the HMTL5 Boilerplate rules for "cache busting" in my Rewrite rules:
<rewrite>
<rules>
<rule name="Cachebusting">
<match url="^(.+)\.\d+(\.(js|css|png|jpg|gif)$)" />
<action type="Rewrite" url="{R:1}{R:2}" />
</rule>
</rules>
</rewrite>
If I just leave it in the web.config for Foo
, then when I work on Bar
, it's not applied and I get errors since the rewrite isn't happening. So I've replicated sections into the web.config for both projects.
But when I publish the solution to Azure, I get conflicts because of the inheritance rules since the web.config for Foo
is in the root.
What is the best way to manage this? I tried to search on this topic but couldn't find this exact problem described.
Update:
My applicationhost.config
for IIS Express is as such:
<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>
I tried editing it to make both apps part of the same site, with these changes but no luck. Seems to have broken everything :)
<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>