私は少し実験をして、なんとかそれを解決することができました。ファイルが共有されるため、静的サイトのルートがメインWebサイトの同じルートを指すように機能しませんweb.config
。静的サイトに加えられた変更(つまり、セッション状態の無効化)は、メインWebサイトにも適用されます。
結局、機能するのは次のとおりです。
- 静的ドメインがファイルシステム上の別のルートフォルダを指すようにします。
- 静的サイト(
/Content/
および/Scripts/
)の仮想ディレクトリが、メインサイトの対応する場所を指しているようにします。
- キャッシュバスティングにはHeliconのURLリライターを
.htaccess
使用しているため、メインサイトで使用されているのと同じルールで必要最低限のファイルを作成します。それを静的サイトのルートに置きます。
global.asax
メインのWebサイトから静的サイトのルートにファイルをコピーします。これはショートカットにはなりません。
/bin/
フォルダの内容をメインのWebサイトから静的サイトに
コピーします。
- メインWebサイトのフォルダーを指すIISの仮想ディレクトリは機能し
/bin/
ません。
- メインWebサイトのフォルダへのショートカットをファイルシステムに作成すること
/bin/
もできません。
- IISで、静的サイトが独自のアプリケーションプールを使用していること、および.NET4.0の統合パイプラインモード用に構成されていることを確認します。これは、MVC4バンドルが機能するようにするためです。
- 追加されたベアボーンを作成し
web.config
ますUrlRoutingModule
。
これはweb.config
静的サイト用です:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.web>
<customErrors mode="Off">
</customErrors>
<sessionState mode="Off" />
<pages enableSessionState="false" enableViewState="false" enableViewStateMac="false" renderAllHiddenFieldsAtTopOfForm="false" />
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<modules runAllManagedModulesForAllRequests="true">
<remove name="ScriptModule" />
<add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</modules>
<urlCompression doStaticCompression="true" doDynamicCompression="true" />
<security>
<requestFiltering allowDoubleEscaping="True" />
</security>
<tracing>
<traceFailedRequests>
<add path="*">
<traceAreas>
<add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
</traceAreas>
<failureDefinitions timeTaken="00:00:00" statusCodes="200" />
</add>
</traceFailedRequests>
</tracing>
<!-- Cache static content for a month, only enable on UAT or Live -->
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00"/>
</staticContent>
</system.webServer>
</configuration>
主なアイデアは、仮想ディレクトリが検討される前にバンドルがIISによって評価されるため、バンドルではASP.NET MVC4を有効にして静的サイトで実行する必要があるということです(これを元に戻す方法はないようです)。