IIS:非ASPX 404Sをログインするにはどうすればよいですか?
質問
ログに記録されていないリンクがたくさんあります。私の通常の404ロギングルーチンがそれらをキャッチするように、ASP.NETを介してそれらを送信するためにIISをセットアップする方法はありますか?
解決
IIS 6 HackメソッドでホストMVCを使用できます。基本的に、ワイルドカードをセットアップします。* IISでマッピングし、ASPNET_ISAPI.DLLにこのリクエストを処理させます。これは、.NETがすべてのリクエストを処理することと同じです。パフォーマンスの減少(おそらく最小限)が発生する可能性がありますが、ロギングルーチンにヒットするはずです。
他のヒント
IIS7を使用している場合は、HTTPERRORS構成要素を使用できます。これが行うことは(リクエストが処理された後)出力にプッシュされた応答コードをチェックし、次のような呼び出しを傍受できることです。
<httpErrors existingResponse="PassThrough">
<remove statusCode="404" />
<error statusCode="404" responseMode="ExecuteURL" path="/PageNotFound.aspx" />
</httpErrors>
パイプラインの後半で処理されることを除いて、ASP.NETのCustomErrorsメカニズムによく似ています。上記の例では、url /pageNotfound.aspxが404に遭遇したら実行するように言っています。ただし、pagenotfound.aspxページから404を送信した場合(通常はそうします!)、注意する必要があります。周期的なリダイレクトに巻き込まれる可能性があります。これを回避するために、次の属性を追加します。
existingResponse="PassThrough"
これが行うことは、現在の応答がすでに本文を持っているかどうかを判断することです。もしそうなら、それを渡すことです(ステータスコードを処理しないでください)。
私はこれを少し前に私のブログに投稿しました: http://www.fidelitydesign.net/?p=21
それが役立つことを願っています:)