2

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 アプローチを使用するときに元のリクエスト データを取得する方法はありますか?

4

1 に答える 1

0

の下の web.config で に設定runAllManagedModulesForAllRequestsします。truemodulessystem.webServer

<system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
    ...
</system.webServer>
于 2012-10-11T06:15:27.330 に答える