次のように web.config で指定されたカスタム IHttpHandler があります。
<httpHandlers>
<add verb="*" path="*.html" validate="true" type="PipingRedirectHandler" />
<add verb="*" path="*.htm" validate="true" type="PipingRedirectHandler" />
</httpHandlers>
IIS 7 (Win 2008 R22 上) では、 Path:*.html/*.htm
と executable:を使用してハンドラー マッピングを追加しまし%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll
た。
別のマシンの Windows 共有にマップされた仮想ディレクトリもあります。エイリアス: ClientFiles
、物理パス: \\othermachine\ClientFiles
。この仮想ディレクトリは、共有へのフル コントロール アクセス (読み取り、書き込み、実行など) を持つドメイン ユーザーとして "Connect As" に設定されていますが、Web サイト、アプリ プール ID、物理パスへの接続に関するその他すべてサイトの残りの部分などはすべてデフォルトです(ApplicationPoolIdentity
)。
私の IHttpHandler は、Web サイト上のすべてのローカル html ファイルで正常に動作し、ClientFiles 仮想ディレクトリ上のすべての css と画像も完全に動作します。唯一の問題は、仮想ディレクトリから html ファイルを読み取ろうとするときです。そうHTTP 401 Unauthorized
しようとするとエラーが発生します。
ローカルの ASP.Net ISAPI がファイルを直接読み込もうとしていて、仮想ディレクトリの "Connect As" 設定を尊重していないことが原因だと考えたので、アプリ プールの ID を、アクセス権を持つ同じドメイン ユーザーに変更しました。動作するようです。
ちょっと思ったんです:
- これは正常ですか?
- 仮想ディレクトリ設定で指定されたユーザーを使用しないのはなぜですか?
- 適切な方法で問題を回避しましたか?
アプリ プールをドメイン ユーザーを使用するように設定すると、セキュリティがわずかに低下すると思いますが、使用しないことをお勧めします。