ASP.NET のバージョン切り替え
複数の ASP.NET のインストール〜設定変更まで簡単に。
.NET Framework のインストール
あたりまえのことだけど、ASP.NET に対応した .NET Framework をインストールする。
すでに ASP.NET で Web Application や Web Service が稼動している場合、その環境を破壊しないために、
Dotnetfx.exe /c:"install /noaspupgrade"
と、/noaspupgrade オプションを指定すること。
クライアント向けコンテンツのインストール
各バージョンの ASP.NET 用のクライアントコンテンツをインストールする。これがなくてもある程度は動作するのだが、Validator やら Postback やらが動作しなくなるので、必須といえるだろう。
aspnet_regiis.exe -c
インストールしたすべての .NET Framework のディレクトリに aspnet_regiis.exe が存在するので、個別に1つづつ実行すること。デフォルトでは aspnet_regiis.exe は Windows ディレクトリの下の Micoroft.NET/Framework/VERSION/ に配置されている。
クライアントコンテンツのデフォルトのインストール先は、
/inetpub/wwwroot/aspnet_client/system_web/VERSION/
になっていて、独自の WebControls を作成した時に、たとえば、
/inetpub/wwwroot/aspnet_client/NAMESPACE/VERSION/
みたいなフォルダを作ってクライアント向けコンテンツを管理することができる。このあたりの使い方は http://www.asp.net/ のコンポーネント群をダウンロードしてみて比較してみると、あまり安定していないようだ。
インストールされている ASP.NET のバージョンは、
aspnet_regiis.exe -lv
- -
1.1.4322.0 Valid C:\WINNT\Microsoft.NET\Framework\v1.1.4322\aspne
t_isapi.dll
2.0.50727.0 Valid (Root) C:\WINNT\Microsoft.NET\Framework\v2.0.50727\aspn
et_isapi.dll
のように表示することができる。クライアントコンテンツのアンインストールには、
aspnet_regiis.exe -e
aspnet_regiis.exe -ea
を実行する。-e は aspnet_regiis.exe 自身がインストールしたコンテンツのみをアンインストールするのみだが、-ea は認識可能なすべてのバージョンのクライアントコンテンツをアンインストールする。
ASP.NET のスクリプトマッピングを設定する
仮想ディレクトリに ASP.NET の設定を行う。1つづつ設定すると物凄い量の設定があるのだが、これも aspnet_regiis.exe を利用して
aspnet_regiis.exe -s path/to/virtual/directory
aspnet_regiis.exe -sn path/to/virtual/directoryex)
v1.1.4322\aspnet_regiis.exe -s W3SVC/1/Root/asp11
v2.0.50727\aspnet_regiis.exe -s W3SVC/1/Root/asp20
とするだけである。ちなみに W3SVC/1/Root というのは標準でセットアップされた最初の IIS の WWW Service インスタンスを示す rootpath で、標準だと W3SVC/1/Root/asp11 は http://localhost/asp11/ を意味することになる。
1つの仮想ディレクトリで運用できる ASP.NET ランタイムは1つだけなので、利用したい ASP.NET の aspnet_regiis.exe を1回だけ使用する。
マッピングの現在設定は、
aspnet_regiis.exe -lk
- -
W3SVC/ 2.0.50727.0
W3SVC/1/Root/asp11/ 1.1.4322.2032
W3SVC/1/Root/asp20/ 2.0.50727.0
のように表示することができる。*1アンインストールには、
aspnet_regiis.exe -k path/to/virtual/directory
aspnet_regiis.exe -kn path/to/virtual/directory
を使用する。
Root に対して ASP.NET を設定する
aspnet_regiis.exe -i
aspnet_regiis.exe -ir
aspnet_regiis.exe -r
aspnet_regiis.exe -u
aspnet_regiis.exe -ua
- i は root に ASP.NET の現在バージョンをインストールしスクリプトマッピングの設定も書き換える。-ir だとスクリプトマッピングは更新されない。-r はスクリプトマップのみを更新する。*2
- u でアンインストールする。-ua はすべてのバージョンの ASP.NET をアンインストールする。
この3つのコマンドは、環境が完全に壊れてしまったと思われるときに最後の手段として利用してみるとよいかもしれない。その場合は、まず -ir を利用して ASP.NET のみを再登録し、-s や -sn によってスクリプトマップを更新してみるのが良いだろう。-i や -u を使うのは最後の手段だ。