6

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>

誰でも助けることができますか?

4

1 に答える 1