ASP.NET 関連のスクリプトマッピングの設定

ウェブサーバーは、基本的に URL で指定されたドキュメントをクライアントに返すことになっています。

この時に、ウェブサーバーがアプリケーションを起動して指定されたドキュメントを処理してから結果を返すか、あるいは、画像ファイルのように指定されたファイルをそのまま返すか、 という判断が必要なわけですが、それは通常指定されたドキュメントの拡張子で判断されます。

拡張子が無い場合はデフォルトドキュメントとして指定されているドキュメントが返されます。

ASP.NET では最も基本的なアプリケーションとしては、「Web フォーム」というのがあります。

Web フォームは、デフォルトでは *.aspx という拡張子で作ることになっています。

従って、IIS は /vdir1/foo.aspx というようなリソースを要求された場合、その拡張子が .aspx であることから ASP.NET の Web フォームが要求された、と判断します。 そして、*.aspx という拡張子に関連付けされたアプリケーションに、処理を委ねます。

このようにスクリプトを処理するアプリケーションを、スクリプトハンドラ (Script Handler) といいます。

IIS マネージャでは、次のようにスクリプトマッピング (Script Mappings) で、拡張子とそれを処理するハンドラの関連付け (マッピング) が行なわれます。

スクリプトハンドラ

試しに PageHandlerFactory-ISAPI-4.0_64bit なるエントリをダブルクリックして、設定内容をみてみましょう。

スクリプトハンドラ

ここでは C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll という DLL がスクリプトハンドラとして登録されていました。

ASP.NET を使うにはいちいち全ての拡張子を自分で登録しなければならないのでしょうか?

実は .NET Framework では ASP.NET のスクリプトを登録する便利なコマンドが用意されています。

.NET Framework のシステムルート (%SYSTEMROOT%\Microsoft.NET\Framework64\v4.0.30319 等) に aspnet_regiis.exe というコマンドがあり、 これで -i オプションをつけて実行するとスクリプトマッピングが登録されます。

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -i
Microsoft (R) ASP.NET RegIIS version 4.0.30319.18408
Administration utility to install and uninstall ASP.NET on the local 
machine.
Copyright (C) Microsoft Corporation.  All rights reserved.
Start installing ASP.NET (4.0.30319.18408).
..........
Finished installing ASP.NET (4.0.30319.18408).

ちなみに、アンインストールするときは -u オプションです。

C:\Windows\Microsoft.NET\Framework64\v4.0.30319>aspnet_regiis.exe -u
Microsoft (R) ASP.NET RegIIS version 4.0.30319.18408
Administration utility to install and uninstall ASP.NET on the local 
machine.
Copyright (C) Microsoft Corporation.  All rights reserved.
Start uninstalling ASP.NET (4.0.30319.18408).
...........................
Finished uninstalling ASP.NET (4.0.30319.18408).

さらについでに言えば、 aspnet_regiis.exe には多数のオプションがあります。オプション無しで aspnet_regiis.exe を実行するとヘルプが表示されるので、 サーバー管理者の人は一度見ておくとよいでしょう。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説