私のソリューションでは、2 つのプロジェクトがあり、それらFoo
を と と呼びますBar
。展開するFoo
と、ルート サイト (http://mycompany.com) になりBar
、サブディレクトリ (http://mycompany.com/sub) になります。
ローカル マシンの IIS Express でローカルに作業する場合、別々に作業するため、両方のプロジェクトの web.config に複製する必要があります。たとえば、Rewrite ルールに「キャッシュ バスティング」用の HMTL5 ボイラープレート ルールの 1 つがあります。
<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 に複製しました。
Foo
しかし、ソリューションを Azure に発行すると、web.configがルートにあるため、継承ルールが原因で競合が発生します。
これを管理する最善の方法は何ですか? このトピックを検索しようとしましたが、説明されているこの正確な問題が見つかりませんでした。
アップデート:
私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>