1 台のコンピュータに複数バージョンの ASP.NET がインストールされている場合、ASP.NET は side-by-side 実行されていると言います。このセットアップでは、インターネット インフォメーション サービス (IIS: Internet Information Services) は、ASP.NET アプリケーションでどのバージョンの ASP.NET ISAPI (aspnet_isapi.dll) がページを処理するかを認識している必要があります。ASP.NET アプリケーションに関連付けられている ASP.NET ISAPI のバージョンに応じて、アプリケーションで使用する CLR のバージョンが決定されます。ASP.NET アプリケーションは、IIS 内のスクリプト マップを使用して、1 つのバージョンの ASP.NET ISAPI に関連付けられます。ASP.NET アプリケーションの構成プロセスを簡略化するため、ASP.NET の各バージョンにはリンク バージョンの Aspnet_regiis.exe が付属しています。
メモ : |
|---|
.NET Framework の各バージョンには、一意なバージョンの Aspnet_regiis.exe が付属しています。ツールの各バージョンは、関連付けられているバージョンの .NET Framework だけに適用されるため、ASP.NET アプリケーションを構成する場合は、適切なバージョンのツールを使用するようにしてください。 |
ツールに関連付けられている .NET Framework バージョンに ASP.NET アプリケーションをマップし直すために、通常は -s オプションまたは -sn オプションを付けて ASP.NET IIS 登録ツールを使用します。指定したルート パスおよびそのすべてのサブディレクトリ内のアプリケーションを更新するには、-s オプションを使用します。サブディレクトリ内のアプリケーションを更新しない場合は、-sn オプションを使用します。コンピュータにあるすべての既存の ASP.NET アプリケーションのスクリプト マップを一度に更新するには、-r オプションを使用します。
メモ : |
|---|
path パラメータは、物理パスではなく、アプリケーションのルート パスを指します。たとえば、W3SVC/1/ROOT/SampleApp1 です。 |
一方、ASP.NET IIS 登録ツールでは、-k オプションや -kn オプションを使用し、アプリケーションのルート パスを指定することによって、ASP.NET の任意のバージョンに対するスクリプト マップをアプリケーションから削除できます。指定したルート パスが親ルート パスからスクリプト マップを継承している場合、-k オプションおよび -kn オプションは無効です。
-norestart オプションを使用して、ASP.NET スクリプト マップをインストールまたは更新した後に、World Wide Web 発行サービスを再起動しないようにします。いずれのアプリケーション プールも再利用しない場合は、このオプションを使用する必要があります。IIS でさまざまなアプリケーション プールの複数の Web サイトを実行し、いずれのサイトも再起動しない場合に、このオプションを使用する必要があります。
インターネット インフォメーション サービス コンソール アプリケーションの [ASP.NET] タブを使用して変更を行った場合も、すべてのアプリケーション プールが再利用されます。いずれのアプリケーション プールも再利用せずにアプリケーションで使用する ASP.NET のバージョンを変更する場合は、次の 2 つのコマンドを実行してバージョンを変更します。
aspnet_regiis -s w3svc/<instance>/root -norestart
iisapp /a <app pool> /r
ASP.NET IIS 登録ツールを使用して、ASP.NET のリンク バージョンをインストールおよびアンインストールすることもできます。ASP.NET をインストールして、すべての既存の ASP.NET アプリケーションのスクリプト マップを更新するには、-i オプションを使用します。スクリプト マップを更新せずに ASP.NET をインストールするには、-ir オプションを使用します。このツールに関連付けられた ASP.NET バージョンをアンインストールするには、-u オプションを使用します。コンピュータから ASP.NET のすべてのバージョンをアンインストールする場合は、-ua オプションを使用します。
ASP.NET IIS 登録ツールを使用して、ASP.NET に関する情報を参照することもできます。コンピュータにインストールされている ASP.NET のすべてのバージョンのステータスとインストール パスを一覧表示するには、-lv オプションを使用します。ASP.NET が割り当てられている、すべての IIS メタベース キーのパスを参照するには、-lk オプションを使用します。
クライアント側の検証スクリプトなどのクライアント側スクリプトは、Aspnet_regiis.exe を使用してインストールおよび削除できます。このツールに関連付けられている ASP.NET のバージョン用のクライアント側スクリプトを、各 IIS サイト ディレクトリの Aspnet_client サブディレクトリにインストールするには、-c オプションを使用します。ツールに関連付けられた ASP.NET バージョン用だけのクライアント側スクリプトを削除するには、-e オプションを使用します。インストールされている ASP.NET のすべてのバージョン用のクライアント側スクリプトを削除するには、-ea オプションを使用します。
偽装を使用するときに偽装アカウントが IIS メタベースに対する読み取りアクセス権を持っていない場合、DirectoryEntry にアクセスしようとすると、"アクセスが拒否されました。" というメッセージの COMException 例外がスローされます。これは、アプリケーションのルート ディレクトリにアプリケーションの Code サブディレクトリが存在する場合に発生することがあります。また、アプリケーションが UNC 共有に割り当てられ、UNC アカウントがメタベースに対する読み取りアクセス権を持っていない場合にも、このエラーが発生することがあります。このいずれかに該当する場合、偽装アカウントまたは UNC アカウントに対して -ga user オプションを指定して ASP.NET IIS 登録ツールを実行すると、この問題が修正されます。
ASP.NET の side-by-side 実行の詳細については、「ASP.NET での side-by-side 実行のサポート」を参照してください。スクリプト マップとアプリケーションのルート パスの詳細については、Microsoft の Web サイトで IIS のドキュメントを参照してください。