IIS 7.5 でホストされている asp.net mvc 4 サイトがあります。Application_Error ハンドラーですべての http エラーを手動で処理しています。403 エラー以外はすべて問題ありません (たとえば、 に移動する場合http://mysite/App_Data
)。問題は、Application_Error がこのエラーをキャッチしないことです。誰かがそれを機能させる方法を教えてもらえますか?
編集
Application_Error は、マネージ モジュールでスローされた例外のみをキャッチすることがわかりました。管理されていない DirectoryListingModule によって 403 エラー (私の場合は 403.14) がスローされるため、このエラーを Application_Error でキャッチすることはできません。また、RequestFilteringModule によって処理される 404.7 または 404.8 エラーの可能性もあります (これも管理されていません)。これらのエラーの処理をカスタマイズする唯一の方法は、次の設定を使用することです。
<httpErrors errorMode="Custom" existingResponse="Replace">
<error path="/Error/Forbidden" statusCode="403" subStatusCode="14" responseMode="ExecuteURL"/>
<error path="/Error/NotFound" statusCode="404" subStatusCode="7" responseMode="ExecuteURL"/>
<error path="/Error/NotFound" statusCode="404" subStatusCode="8" responseMode="ExecuteURL"/>
</httpErrors>
NotFound アクションを持つ ErrorController を持つ。しかし、私にとってこのアプローチには1つの欠点があります-エラーの原因となった元のリクエストデータが失われ(子サーバー側のリダイレクトが実行されるため)、それを取得する方法がありません(少なくとも方法はわかりません) . そこで、質問を変更したいと思います。このようなエラーを処理する唯一の方法ですか? また、httpErrors アプローチを使用するときに元のリクエスト データを取得する方法はありますか?