IIS8 から Application Initialization という機能が組み込まれています。IIS 7.5 まではアドインとして提供されていました。詳細はリンクを参照してください。知っているひとには今更かもしれませんが、便利そうなので自分用に使い方の覚書を記載しておきます。

Application Initialization
http://www.iis.net/learn/get-started/whats-new-in-iis-8/iis-80-application-initialization

IIS オート スタート設定による ASP.NET Web アプリケーションの初回実行時のパフォーマンス向上
http://blogs.msdn.com/b/chack/archive/2013/09/25/using-aspnet-iis-auto-start-on-windows-azure-cloud-services.aspx

検証環境は次の通り

  • Windows Server 2012
  • IIS インストール済み

Application Initialization の機能を使用することで1 ASP.NET Webアプリケーションの初回アクセス時のコストを省くことができるようになります。

1. Application Initialization のインストール

IISをデフォルトの設定でインストールした場合は、 Application Initialization のコンポーネントがインストールされていません。Webサーバーの機能の中で Application Initializationの機能がインストールされていない場合は、サーバーの役割の追加で下図のように Application Initialization をチェックして Application Initialization 機能をインストールしてください。

2.アプリケーションの自動開始の設定

IISマネージャーを起動して、 アプリケーションプールとサイトの設定をしていきます。

2.1 アプリケーションプールのAlwaysRunning の設定

アプリケーションプールの詳細設定画面を表示します。下図のように開始モードを AlwaysRunning にします。 OnDemand ではなく AlwaysRunning にしておくと、アプリケーションプールを常に起動した状態にすることができます。たとえば、アプリケーションプールがリサイクルされたり、一定時間アクセスがないためにアプリケーションプールがリサイクルされた場合も、アプリケーションプールが起動した状態にできます。

2.2 Webサイトの設定

次に Webアプリケーションが動作するサイトの詳細設定画面で 下図のように 有効かされたプリロード を True に変更します。

以上で IISマネージャーを使用した オートスタートの設定は完了です。

最後に、アプリケーションプールがリサイクルしたときにどのWebサイトにアクセスするかの設定を行います。

ASP.NET Webアプリケーションの Web.config を編集します。system.webServer に次のようなタグを追加します。

    <applicationInitialization>
      <add initializationPage="/" />
    </applicationInitialization>

上記設定では Webサイトのルートのアクセスすることで Web アプリケーションを起動するように設定しています。今回は1つのURLのみを設定していますが、複数のURLを指定することもできます。

3.まとめ

説明は以上です。 Application Initialization の機能を使用することで ASP.NET アプリケーションの初回アクセス時のコストをなくし、ASP.NET Web アプリケーションを常に起動した状態にすることができます。