IIS 7.5 でアプリケーション初期化モジュールをかなり長い間使用してきましたが、常に完全に機能していました。
ただし、SSL の実装を開始したばかりであり、ウォームアップと競合するようです。私はかなりの調査を行いましたが、これまでのところ解決策はありませんでした。
基本的に問題は、初期化モジュールがリダイレクトに従わないことです。サイトの特定の部分で http を有効にしておく必要がありますが、他のすべての HTTP アクセスを同等の HTTPS にリダイレクトします。httpsページに302をスローする書き換えルールを使用してこれを解決しました。初期化はこの 302 を受け取りますが、無視します。
私が試した解決策:
APP_WARMING_UP サーバー変数
これが一番わかりやすいでしょう。{APP_WARMING_UP} が 1 を返すたびに、書き換えルールがすべてのリクエストを無視するようにすることもできます。ドキュメントによると、初期化がまだ実行されている限り、これは 1 に設定されます。残念ながら、{APP_WARMING_UP} は常に空の文字列を返すだけなので、これはまったく機能しません。多分これは7.5の制限ですか?(以下の私の書き換えルールを参照してください。)
初期化ページをHTTPS版に変更
現在、次のように構成されています。
<applicationInitialization remapManagedRequestsTo="Warmup.htm" skipManagedModules="true" doAppInitAfterRestart="true">
<add initializationPage="/WarmUp?id=1" />
</applicationInitialization>
URL を「https://{HTTP_HOST}/Login/WarmUp?id=1」に変更し、{HTTP_HOST} を絶対アドレスに置き換えてみましたが、どちらの構成でもアプリケーションの初期化が完全に無効になっているようです。もうページリクエストさえしません。
これは、モジュールに関するドキュメントです。
http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization
これは、基本的に試練全体の犯人である私の書き換えルールです。それは唯一のものです。
<rule name="HTTP to HTTPS redirect" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{APP_WARMING_UP}" pattern="1" negate="true" />
<add input="{REQUEST_URI}" pattern="/services" negate="true" />
<add input="{HTTPS}" pattern="off" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" logRewrittenUrl="true" />
<serverVariables>
<set name="SKIP_MANAGED_MODULES" value="0" />
</serverVariables>
</rule>
誰でも助けることができますか?