IIS7.5 で ASP.NETの特別なフォルダにアクセス可能にする
昨日、Twitter経由で教わった情報をまとめておきます。
IIS7.5ではApp_DataのようなASP.NET用に用意されている特別なフォルダにはアクセスできません。
通常だとこんな表示なります。
なんとか、このフォルダ内にある画像を見せることができないか、という話になったんですが、この設定、実はIIS管理ツールの要求フィルター設定で変更することができます。
要求フィルターの「非表示セグメント」にASP.NET用の特別なフォルダが列挙されています。
ここからApp_Dataの設定を削除することで、フォルダにアクセスしたときのメッセージが変わります。
画像ファイルがあれば、App_Data内であっても表示できることも確認できます。
これらの設定ですが、IIS 7.5の基本設定ということでApplicationHost.configに下記の記述があります。
<hiddenSegments applyToWebDAV=”true”>
<add segment=”web.config” />
<add segment=”bin” />
<add segment=”App_code” />
<add segment=”App_GlobalResources” />
<add segment=”App_LocalResources” />
<add segment=”App_WebReferences” />
<add segment=”App_Data” />
<add segment=”App_Browsers” />
</hiddenSegments>
Windows7の場合、ApplicationHost.configは C:\Windows\System32\inetsrv といったフォルダに存在しているので確認してみるといいでしょう。
で、IISの管理ツールから上記のようにApp_Dataフォルダへの設定を削除すると、その作業を行ったサイトのルートに存在するweb.configに以下の記述が追加されます。
<security>
<requestFiltering>
<hiddenSegments>
<remove segment=”App_Data” />
</hiddenSegments>
</requestFiltering>
</security>
ApplicationHost.configの基本設定にweb.configの設定が上書きされる、ということですね。
まあ、ASP.NETを利用しているなら、特別なフォルダはそのフォルダの用途に沿った使い方をすべきだと思いますが、なにかあったときに設定が変更できることは覚えておいて損はないと思います。
なお、IIS7 ではこの要求フィルターに対するGUIが存在しないようです。
TechNetではコマンドで要求フィルターを設定する方法が記述されています。
http://technet.microsoft.com/ja-jp/library/cc754791(WS.10).aspx