Application Initialization 機能有効化時に HTTP Module 内でサーバー変数を取得すると発生する問題について

こんにちは。 日本マイクロソフト、CSS デベロッパー ツールズ AppPlat の神田一行です。 今回は IIS に古くから存在する ISAPI モジュールと IIS 8.0 で標準搭載された Application Initializationを組み合わせて利用した際に発生する可能性があるトラブルについて、お伝えさせていただきます。 Application Initialization について IIS は、既定でサービス開始直後にワーカープロセスを起動しません。ユーザーからのリクエストを受けてからワーカープロセスを起動し、その中で ASP.NET の初期処理などを行っています。結果、最初にリクエストを行うユーザーは、通常時と比べて応答に時間がかかる (初期化が完了するまで待たされる) こととなります。 この初回リクエストにかかるコストを軽減するための機能として Application Initialization が提供されており、自動的にワーカープロセスを起動させる機能と、仮想的な要求を内部的に発行し、該当の初期化処理を事前に終わらせる機能、の組み合わせで実現されています。 症状 IIS 上にホストしたページにアクセスした際、ブラウザーからの応答が無くなる、もしくは、503 Service Unavailable エラーが表示されます。 また、IIS サーバー上のイベントログに以下の様なログが繰り返し記録されます。 条件 本事象は、次の条件を全て満たすことで発生します。 Windows Server 2012 から標準機能として搭載された Application Initialization を役割サービスから有効にする Web サイトやアプリケーションの詳細設定において、”有効化されたプリロード” が True となっている 処理の過程で “UNENCODED_URL” サーバー変数を参照する ISAPI…


IIS7 以降の静的コンテンツの圧縮について

こんにちは。日本マイクロソフト、CSS デベロッパー ツールズ AppPlat の月尾です。 今回は、静的コンテンツの圧縮が行われる条件の一つとして、コンテンツへのアクセス頻度が関連していることについてお知らせいたします。 静的コンテンツの圧縮の設定について 静的コンテンツの圧縮を有効にするためには、以下の設定が必要となります。 1. Web サーバーの役割サービスから、[パフォーマンス] – [静的コンテンツの圧縮] を有効にします。 HTTP 圧縮 <httpCompression> – セットアップhttps://technet.microsoft.com/ja-jp/library/ee431600.aspx#ghi 2. IIS マネージャーで、サーバーを選択した状態で、機能ビューにある [圧縮] から以下の設定を行います。    [静的なコンテンツの圧縮を有効にする] : チェックを入れます   [次の値より大きいファイルのみ圧縮する (バイト)] : 圧縮を行いたいファイルの最小のサイズを設定します   [キャッシュ ディレクトリ : 圧縮を行ったファイルの保存先のディレクトリを設定します 圧縮を構成する (IIS 7)https://technet.microsoft.com/ja-jp/library/cc730629(v=ws.10).aspx 3. 圧縮を行う対象のコンテンツ タイプを追加します。 IIS 7.0 で HTTP 圧縮対象のコンテンツ タイプを追加する方法https://support.microsoft.com/ja-jp/kb/969062 静的な種類 <staticTypes>https://technet.microsoft.com/ja-jp/library/ee431653.aspx 静的コンテンツの圧縮の確認方法について 上記を設定した状態で実際に静的コンテンツにアクセスしてみます。この際、IE の F12 開発者ツールや、Fiddler…