LoginSignup
1
1

aspnet_client フォルダとは何?

Posted at

.NET Framework 版の ASP.NET Web アプリを IIS でホストする場合の話です。IIS でサイトに設定したフォルダ下に aspnet_client というフォルダが自動的に(勝手に)作られていると思いますが、これは何かという話です。(ASP.NET Core のサイトには作られません)

aspnet_client.jpg

C:\inetpub\wwwroot 直下だけでなく、IIS で .NET Framework 版の ASP.NET Web アプリのサイトに設定したフォルダには aspnet_client フォルダがあるはずです。(サイトではないアプリケーションルートにはないはず)

このフォルダの目的は、ASP.NET 1.1 以前で、サーバーコントロールから送られてくるクライアントスクリプトを保持するためのものだそうです。(加えて、グローバルテーマを保持するフォルダとしても利用されていたそうです。詳しくは、この記事の一番下にリンクを張った Stackoverflow の記事と、Microsoft のドキュメント「How to: Define ASP.NET Page Themes」の中の「Creating Global Themes」のセクションを見てください)

ASP.NET Web Forms アプリのサーバーコントロールは、RegisterStartupScript メソッド等を使用してスクリプトを送信することもできますが、これは (1) ページのサイズが増大する可能性がある、(2) スクリプトをブラウザがキャッシュできなくなるという問題があります。

この問題に対処するために、ASP.NET 1.1 以前では aspnet_client フォルダが使用されています。このあたりの詳細説明は、Microsoft のドキュメント「ASP.NET 2.0 でのクライアント ファイルの処理」を見てください。

ASP.NET 2.0 以降については、サーバーコントロールのアセンブリにスクリプトファイル等のリソースを埋め込み、HTTP ハンドラ (WebResource.axd) を使って取得するようになっているので、aspnet_client フォルダは使われません。

上記の Microsoft のドキュメントにも ASP.NET 2.0 のリソース埋め込みに関する説明があります。(ただし、パラメータの説明などが古いようですので注意してください)

以上のようなわけで、ASP.NET 2.0 以降であれば aspnet_client フォルダは使わないので、削除しても問題なさそうです。

ただし、Stack Overflow の What is the aspnet_client folder for under the IIS structure? に説明がありますように、Windows Update などで復活することもあるそうです。なので、削除してもあまり意味はないかもしれません。

なお、.NET Framework 4 をインストールすると、aspnet_client フォルダの中に system_web\4_0_3031 というフォルダができるはずですが、これは ASP.NET 4 で aspnet_client フォルダの使用が復活したというわけではなく、もともとそういうフォルダができる仕様になっているそうです。

詳しくは、Stack Overflow の Why did the aspnet_client folder come back in ASP.NET 4? を見てください。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1