ASP.NET 3.5 と ASP.NET 4.5 を使用した IIS 8.0
作成者: Won Yoo
互換性
バージョン | メモ |
---|---|
IIS 8.0 | ASP.NET 3.5 と ASP.NET 4.5 は IIS 8.0 でサポートされています。 |
IIS 7.5 | ASP.NET 3.5 と ASP.NET 4.5 は IIS 7.5 でサポートされています。 |
IIS 7.0 | ASP.NET 3.5 と ASP.NET 4.5 は IIS 7.0 でサポートされています。 |
問題
Windows Server 2012 には、既定で .NET Framework 4.5 と、.NET 3.5 Framework のオプションのインストールが含まれています。 開発者は、多くの場合、複数の .NET Framework バージョンで混合 Web アプリケーションを実行する必要があります。
解決策
Windows Server 2012 での IIS 8.0 では、Windows Server 2012 でサポートされているすべての .NET Framework バージョンで ASP.NET アプリケーションが実行されます。 つまり、ASP.NET アプリケーションは、.NET Framework 3.5 または .NET Framework 4.5 のいずれかを使用して IIS 8.0 で実行できます。 IIS 8.0 では .NET Framework の各バージョンが異なるアプリケーション プールでホストされるため、.NET Framework のバージョンが異なる複数の ASP.NET アプリケーションを Windows Server 2012 で同時に実行できます。
また、IIS 8.0 では、グラフィカル IIS マネージャー ツールと IIS のコマンド ライン管理ツールの両方を使用して、ASP.NET 3.5 アプリケーションと ASP.NET 4.5 アプリケーションの両方の管理もサポートしています。 詳細については、「IIS 8.0 ASP.NET 構成管理」の記事を参照してください。
ステップ バイ ステップの手順
前提条件
- IIS が Windows Server 2012 にインストールされていること。 IIS 8 のインストールの詳細については、「Windows Server 2012 への IIS 8 のインストール」を参照してください。
ASP.NET 3.5 と ASP.NET 4.5 をサポートする IIS 8.0 の設定
Windows Server 2012 では、.NET Framework 3.5 と .NET Framework 4.5 の両方がオペレーティング システムによってネイティブに認識されます。 つまり、UI ベースとコマンド ライン駆動型のセットアップの両方を使用して、両方のバージョンの .NET Framework を有効にできるほか、両方のバージョンの ASP.NET と IIS 8.0 の統合を有効にすることができます。
このチュートリアルでは、Windows Server 2012 サーバーの新しいサーバー マネージャー UI を使用して、IIS 8.0 で ASP.NET 3.5 と ASP.NET 4.5 の両方を有効にする方法を示します。
新しい Windows Server 2012 マシンに初めてログインすると、新しいサーバー マネージャー UI が表示されます。 下に示すように、[役割の追加] をクリックします。
[役割と機能の追加ウィザード] の最初の画面で、[次へ] をクリックします。 これにより、目的のインストールの種類を選択するページが表示されます。 下に示すように、[役割ベースまたは機能ベースのインストール] を選択します。
[次へ] をクリックします。ウィザードの次の画面で、構成するサーバーを選択するように求められます。
次のウィザードの手順で、1 つ以上のサーバーの役割を選択するように求められます。 [役割] の一覧を下にスクロールし、下に示すように [Web サーバー (IIS)] チェック ボックスがオンになっていることを確認します。
[次へ] をクリックして次の手順に進みます。これにより、サーバーにインストールするその他の特定の機能を選択できます。 [次へ] をクリックして、次の手順に進みます。
次のウィザードの手順では、Web サーバー (IIS) の役割に関するいくつかの概要情報が表示されます。 [次へ] をクリックして、次の手順に進みます。 この時点で、ウィザードの手順は次のようになっているはずです。
前に Web サーバー (IIS) のサーバーの役割を選択したため、IIS の既定のサブ機能のいくつかが既に有効になっていることに注意してください。 ただし、ASP.NET 3.5 と ASP.NET 4.5 の両方を IIS 8.0 で実行できるようにする必要があるため、いくつかの追加の IIS 関連機能を有効にする必要があります。 [アプリケーション開発] ノードが表示されるまで、[役割サービス] の一覧を下にスクロールします。 最初は、このノードは折りたたまれています。ノードをクリックして展開し、その子が表示されるようにします。
[アプリケーション開発] ノードでは、IIS と ASP.NET の統合を有効にできます。 機能の一覧には、類似した名前のチェック ボックスがいくつかあることに注意してください。 このチュートリアルで使用するチェック ボックスのペアは次のとおりです。
- ASP.NET 3. 5 - このオプションを使用すると、ASP.NET 3.5 を IIS 8.0 で実行できます。 Windows Server 2012 では、.NET Framework 3.5 をベース OS イメージの一部として使用することはできません。 代わりに、ペイロードがインターネットからダウンロードされます。ユーザーはインターネットに接続する必要があります。
- ASP.NET 4.5 - このオプションを使用すると、ASP.NET 4.5 を IIS 8.0 で実行できます。
まず、[ASP.NET 3.5] チェック ボックスをオンにします。 これを行うと、下のように追加のダイアログ ボックスがポップアップ表示されます。
ASP.NET 3.5 は Windows Server 2012 のセットアップに統合されているため、Windows Server 2012 は IIS 8.0 で ASP.NET 3.5 を有効にするために必要なすべての関連依存関係を把握しています。 このポップアップ ダイアログには、単に自動的に取り込んでインストールされる内容が表示されます。 ASP.NET 3.5 を有効にするため、[必要な機能の追加] をクリックします。
次に、[役割サービス] 機能リストの [ASP.NET 4.5] チェック ボックスをオンにします。 両方の ASP.NET 関連するチェックボックスをクリックした結果を下に示します。
ASP.NET 3.5 と ASP.NET 4.5 の機能のみを直接選択した場合でも、他の多くの項目がウィザードで自動的にオンになりました。 これは自動的に行われるため、開発者が Windows Server 2012 で ASP.NET の "アセンブリ" に必要なさまざまなコンポーネント部分を明示的に選択する必要はありません。 この時点で、[次へ] をクリックして変更を確定します。
[インストール オプションの確認] ステップには、変更を確定した場合にインストールされるすべての機能の一覧が表示されます。
この時点で、[インストール] をクリックして変更を確定し、Windows Server 2012 に完全な ASP.NET サポートをインストールします。
インストールが完了するまでに少し時間がかかるため、ウィザードではインストールの進行中に進行状況ダイアログが表示されます。
この時点で、[閉じる] をクリックしてウィザードを終了できます。
IIS 8.0 のインストールの確認
IIS 8.0 と ASP.NET の両方の統合がインストールされたら、IIS 8.0 の基本的な ASP.NET フットプリントを確認できます。
Windows の [スタート] メニューから [すべてのプログラム] を選択し、[管理ツール] メニューを展開します。 結果の一覧で、[インターネット インフォメーション サービス (IIS) マネージャー] を見つけて選択し、グラフィカル IIS 管理ツールを起動します。
IIS マネージャーが起動したら、左側のウィンドウでサーバー ノードを展開して、[アプリケーション プール] ノードと [サイト] ノードの両方が表示されるようにします。 この操作を行うと、最新の Web プラットフォーム コンポーネントとの接続を維持するかどうかを確認するダイアログが IIS マネージャーにポップアップ表示されます。 このチュートリアルでは、[いいえ] をクリックできます。 この時点で、IIS マネージャーは次の図のようになります。
[アプリケーション プール] ノードをクリックして、IIS 8.0 で使用するためにインストールされたアプリケーション プールを表示します。
IIS 8.0 で ASP.NET 3.5 と ASP.NET 4.5 の両方が有効になっている場合、既定で 6 つの異なるアプリケーション プールが作成されていることがわかります。 IIS 8.0 では 4 つのアプリケーションが新しく追加されましたが、他の 2 つのアプリケーション プールは以前の Windows リリースから引き継がれたものです。
- .NET Framework バージョンの 場合、.[NET Framework バージョン] 列には "v2.0" と "v4.0" が表示されますが、これらは ASP.NET 3.5 および ASP.NET 4.5 と同じであることに注意してください。 アプリケーション プールを .NET Framework のバージョンにバインドする方法の内部構造により、構成に書き込まれた実際のバージョン名 (ツールに表示されます) は、元の .NET Framework ファイルのバージョンに対応します。
- [Classic .NET AppPool] と [DefaultAppPool] は以前のバージョンの Windows に存在していたため、IIS 8.0 用に引き続き作成されます。 ただし、.NET Framework 4.5 は Windows Server 2012 で使用される既定の .NET Framework であるため、IIS 8.0 の "DefaultAppPool" も既定で .NET Framework の新しいバージョンを使用することに注意してください。
- 他の 4 つのアプリケーション プールは、Windows Server 2012 の新機能です。 .NET Framework 3.5 (.NET v2.0 と .NET v2.0 Classic) を実行するための 2 つのアプリケーション プールと、.NET Framework 4.5 (.NET Framework 4.5 と .NET Framework 4.5 Classic) を実行するための 2 つのアプリケーション プールがあります。
- "Classic" と "Classic ではない" アプリケーション プールの違いは、各アプリケーション プールの種類でサポートされるマネージド パイプライン モードです。 "Classic" で終わる 2 つのアプリケーション プールは、ASP.NET の古い Windows Server 2003 時代のクラシック パイプライン モードをサポートしています。他の 2 つのアプリケーション プールでは、Vista/IIS7.0 で導入された ASP.NET 用に新しい統合パイプライン モードが使用されます。
もう少し詳しく調べるため、[既定の Web サイト] ノードが表示されるよう、画面の左側の [サイト] ノードを展開します。
IIS の既定のインストールでは、ポート 80 で HTTP 要求をリッスンするように常に [既定の Web サイト] が構成されています。 [既定の Web サイト] にドリルダウンして、既定でサポートされている ASP.NET のバージョンを確認します。 [既定の Web サイト] を右クリックして [Web サイトの管理] を選択し、下に示すように [詳細設定] を選択します。
[詳細設定] ダイアログがポップアップ表示され、"既定の Web サイト" の実行に使用されたアプリケーション プールが (特に詳しく) 表示されます。 下の図に示すように、"既定の Web サイト" は "DefaultAppPool" という名前のアプリケーション プールで実行されます。
アプリケーション プールの右側にある小さな省略記号ボタンをクリックすると、"DefaultAppPool" に関する詳細情報が表示される追加のダイアログがポップアップ表示されます。 前に説明したように、"DefaultAppPool" は IIS 8.0 では既定で ASP.NET 4.5 に設定されているため、"既定の Web サイト" に展開された ASP.NET 4.5 アプリケーションは、追加の構成なしで機能します。
この時点で、[キャンセル] をクリックして、[アプリケーション プールの選択] ダイアログと [詳細設定] ダイアログの両方をキャンセルします。
ASP.NET 3.5 と ASP.NET 4.5 の両方のアプリケーションを実行する
IIS 8.0 のセットアップ状態を調べたので、ここでいくつかのサンプル ASP.NET コードを実行して、ASP.NET 3.5 と ASP.NET 4.5 のアプリケーションの両方が 1 つの IIS 8.0 インストールで同時に実行できることを確認してみてください。
ASP.NET 3.5 と ASP.NET 4.5 の両方のサンプル コードは、次の .zip に含まれています。
まず、IIS 8.0 で単純な ASP.NET 3.5 アプリケーションを設定します。
"examples.zip" ファイルを開きます。
Windows Server 2012 マシンの Windows エクスプローラーで、IIS インストール用の "wwwroot" ディレクトリに移動します。 たとえば、C:\ ドライブに IIS をインストールした場合、"wwwroot" ディレクトリは
c:\inetpub\wwwroot
にあります。"examples.zip" から "example35" というフォルダーをコピーして、
c:\inetpub\wwwroot
ディレクトリに貼り付けます。 完了すると、ディレクトリ構造は次のようになります。
新しく作成した "example35" フォルダーは、IIS マネージャーで ASP.NET 3.5 アプリケーションとして構成する必要があります。 IIS マネージャー ウィンドウに戻り、[既定の Web サイト] ノードをクリックし、[最新の情報に更新] を選択します。 [既定の Web サイト] の下にある子ノードのツリービューに、"example35" フォルダーが表示されるようになりました。
[example35] フォルダーを右クリックし、[アプリケーションへの変換] を選択します。
[アプリケーションの追加] ダイアログがポップアップ表示されます。 既定では、[既定の Web サイト] 内のすべてのディレクトリは、[DefaultAppPool] というアプリケーション プールの一部となっています。 つまり、ASP.NET を含む新しく作成されたフォルダーは、既定で ASP.NET 4.5 アプリケーションとして実行されます。
[example35] フォルダーを ASP.NET 3.5 アプリケーションとして実行するため、アプリケーション プールを変更する必要があります。 [選択] をクリックし、ポップアップ表示される [アプリケーション プールの選択] ダイアログをクリックします。 下に示すように、アプリケーション プールを [.NET v2.0] に変更します。
[OK] ボタンをクリックしてアプリケーション プールの変更を確定し、もう一度 [OK] をクリックして IIS に変更をコミットします。 IIS マネージャー ウィンドウが再び表示されます。 "既定の Web サイト" を示すツリー ビューで、[example35] のアイコンが変更され、別の ASP.NET アプリケーションとなったことがわかります。
この時点で、Internet Explorer のインスタンスを開始し、次の URL に移動します。
http://localhost/example35
しばらくすると、このアプリケーションでサポートされている .NET Framework 機能の一覧がアプリケーションに表示されます。
Windows エクスプローラーで
c:\inetpub\wwwroot\example35
ディレクトリに移動すると、メモ帳を使用して "default.aspx" のコードと "web.config" の情報を確認できます。 たとえば、web.config の内容には、"3.5" モードで実行するように .NET Framework コンパイラを構成するディレクティブが含まれます。 "default.aspx" の .NET Framework コードは、.NET 3.5 で導入されたいくつかの C# コンストラクト (特に LINQ to Object クエリ) を示しています。
ASP.NET 3.5 アプリケーションが実行されたので、2 つ目の ASP.NET アプリケーションを作成できますが、今回は .NET Framework 4.5 を使用するように構成します。
.zip ファイル "examples.zip" が開いている Windows エクスプローラー ウィンドウに戻ります。
"example45" フォルダーの内容を開きます。
開いている 2 つ目の Windows エクスプローラー ウィンドウで、
c:\inetpub\wwwroot
に移動します。.zip ファイルから "default.aspx" ファイルをコピーして、それを
c:\inetpub\wwwroot
に直接貼り付けます。c:\inetpub\wwwroot
フォルダーの内容は次のようになります。
ここで Internet Explorer に戻り、次の URL に移動します。
http://localhost/default.aspx
しばらくすると、2 つ目のアプリケーション プールで "既定の Web サイト" 用の ASP.NET 4.5 アプリケーションの実行が開始されます。 このアプリケーションでサポートされている .NET Framework 機能の一覧がブラウザーに再び表示されます。動的に型指定された変数 (つまり、.NET Framework 4.0/4.5 で導入された "動的" キーワード) の一覧の最後には、新しいエントリがあります。 特別な web.config エントリを必要とする "example35" アプリケーションとは異なり、"既定の Web サイト" で "default.aspx" ページを構成して実行するのに web.config ファイルは必要なかったことに注意してください。 これは、.NET Framework 4.5 が IIS 8.0 の ASP.NET アプリケーションで使用される既定の .NET Framework であるため、結果として追加の構成を必要としなかったためです。
メモ帳を使用して先ほどコピーした "default.aspx" ページを開くと、"example35" ディレクトリのバージョンと比較していくつかの変更点があることもわかります。 IIS 8.0 では .NET Framework 4.5 が既定のため、ページの上部に名前空間ディレクティブはありません。 このページのコードは、.NET Framework 4.0/4.5 で導入されたコンパイラの概念である "動的" 変数の使用を示しています。
まとめ
IIS 8.0 では、異なるアプリケーション プールを使用して ASP.NET 3.5 と ASP.NET 4.5 の両方のアプリケーションを同じマシン上で実行し、各 .NET Framework バージョンをホストできます。 IIS 8.0 では、複数の .NET Framework バージョンがサポートされており、開発者と管理者は、Windows Server 2008 R2 から引き継がれる Web アプリケーションとの下位互換性を維持しながら、IIS 8.0 を最大限に活用できます。