4

filterConfig 登録内で HandleError 属性を適用することにより、アプリケーションのグローバル エラー処理を有効にしました。

 public class FilterConfig
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }
}

次に、カスタム エラー (web.config) を使用して、サーバー エラーごとにわかりやすいエラー メッセージが表示されることを願っています。

 <customErrors mode="On"  ></customErrors>

これはほとんどの例外で正常に機能しているようで、カスタム エラー ページ ビュー (共有ビュー フォルダー内の Error.cshtml) が表示されるという期待どおりの動作が得られました。

ただし、スローされたエラーが UnauthorizedAccessException である場合に見られる動作ではないことに最近気付きました。

フィドラーを見ると、この UnauthorizedAccessException 例外が標準の例外と同様にプレーンな 500 内部サーバー エラーを返すことがわかります。

では、なぜ標準例外は私の customError 設定に従っているのに、UnauthorizedAccessException はそうではないのでしょうか?

Aそして、どうすればそれらを同じように動作させることができますか? どちらも本質的にエンド ユーザーに表示されないようにしたいエラーです。

4

2 に答える 2

1

このブログ投稿では、例外処理の概要を説明して、unauthorizedAccessException の処理方法を決定できるようにしました。つまり、Application_OnStart 内でそれらを処理することを意味します。

http://prideparrot.com/blog/archive/2012/5/exception_handling_in_asp_net_mvc

私の目的では、HandleErrorAttribute とグローバル Application_OnStart でエラーを処理することにあまり意味がないように思われるので、Application_OnSTart ですべてを処理するのが最善であると判断しました。

于 2013-03-28T18:43:09.977 に答える