2

MVC 3 Web アプリケーションで http カスタム エラー ページを設定しようとしています。web.config に以下を追加しました。

<httpErrors errorMode="Custom" defaultResponseMode="ExecuteUrl" defaultPath="/Error/404">
  <clear />
  <error statusCode="500" path="/Error/404"
</httpErrors>

リクエストで 500 エラーが発生すると、ユーザー my.domainname.com/Error/404 がリダイレクトされると予想していました。

エラーと呼ばれる1つのアクションを含むエラーコントローラーがあり、404のリクエストをこのアクションにマップしました。

Web サイトで 500 エラー (Chrome 開発者ツールの [ネットワーク] タブで確認) を強制すると、次のメッセージが表示された空白のページが表示されます。

「内部サーバーエラーが発生したため、ページを表示できません。」

web.config から httpErrors セクションを削除すると、実際の例外メッセージが表示されます。したがって、web.config にある httpErrors セクションが機能している必要があります。正しく設定する方法がわかりません。

以下は、私が選んだ属性とその理由のリストです。

errorMode="Custom": カスタム エラー ページを表示して、ローカルのみに変更する前に機能していることを確認できるようにします。

defaultResponseMode="ExecuteUrl": これにより、サーバーの相対 URL をパスとして指定できるようになります。これは、コントローラーのアクションを実行したいときに必要なように思えます。

defaultPath="/Error/404": 指定しない場合に要求する相対 URL。

編集:

サイトが IIS 7.5 で実行されていることを付け加えておきます。また、このタグは IIS 6 で動作するように設計されており、IIS 7 以降で使用する必要があるため、使用したくありません。

4

2 に答える 2

0

代わりに、web.config (system.web 内) の customErrors セクションを使用してみてください。

http://msdn.microsoft.com/en-us/library/h0hfz6fc.aspx

例えば

<customErrors mode="On">
        <error statusCode="404" redirect="Error/404" />
        <error statusCode="500" redirect="Error/500" />
    </customErrors>
于 2012-04-24T11:29:47.820 に答える
0

のようになるはずですController/Action/Id。あなたの場合、アクションがありません。次の例を確認し、アクション メソッドに従って変更します...

<system.web>
    <customErrors mode="On" defaultRedirect="/Error/Index/" >
      <error statusCode="401" redirect="/Error/NoAccess/" />
      <error statusCode="404" redirect="/Error/NotFound/" />
    </customErrors>
    ....
</system.web>
于 2012-04-24T11:32:44.170 に答える