ASP.NETでフォーム認証を使っているとスタイルシートの定義ファイルもフォーム認証後でないと読み取れずにログイン画面だけスタイルシートが適用されないような状態になってしまうときがあります。
IISに登録してフォーム認証していないURLからスタイルシートの定義ファイルを取得してもいいのですが、web.configのlocationを指定する事でもできるという情報があったので試してみました。
http://blogs.wankuma.com/juurou/archive/2007/07/21/86350.aspx
まずは、フォーム認証するときの一般的なweb.configから抜粋
<configuration>
<system.web>
<authentication mode="Forms">
<forms path="/" timeout="20" protection="All" loginUrl="/login.aspx" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
この状態ではさびしいlogin.aspxが表示されてしまいます。
そこでこのweb.configにlocationを追加してcssフォルダだけWindows認証にします。
<configuration>
<location path="css">
<system.web>
<authorization>
<allow users="*" />
</authorization>
</system.web>
</location>
<system.web>
<authentication mode="Forms">
<forms path="/" timeout="20" protection="All" loginUrl="/login.aspx" />
</authentication>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</configuration>
これでフォーム認証前でもcssフォルダの中だけはIISの匿名ユーザな権限でアクセスできるようになります。