0

私はチームプロジェクトに取り組んでおり、次のような状況にあります。

独自のExceptionクラスを作成し、myExceptionタイプのスローされたすべての例外を処理し、エラービューに自動的にリダイレクトして、エラーを適切に表示したいのですが、これで問題ありません。これは、Web.configに追加したものです。

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

問題は、残りのすべての例外を正常にスローし、スタックトレース、ソースファイル、ラインエラーなど、チームプロジェクトに非常に役立つすべての情報を確認することです。

[HandleError(ExceptionType = typeof(myException)]を試しましたが、役に立ちません。

また、コントローラーのOnException関数をオーバーライドしようとしましたが、例外がmyExceptionでない場合は、再度スローしますが、それでもエラービューが表示されます。

protected override void OnException(System.Web.Mvc.ExceptionContext filterContext)
{
    if (filterContext.Exception.GetType() != typeof(myException)) {
        throw filterContext.Exception;
    }
    base.OnException(filterContext);
}

うまくいくアイデアはありますか?

ありがとう。

4

1 に答える 1

2

カスタムエラーをオフのままにして(すべてのエラーに対してスタックトレースが表示されるように)、必要な例外を必要なコントローラー/ビューにリダイレクトすることで(見栄えの良いページになるように)、希望する結果を得ることができます。表示されます)。

すべてのコントローラーのベースコントローラーを定義し、そのOnExceptionメソッドを次のようにオーバーライドできます。

        if (filterContext.Exception.GetType() == typeof(YourCustomException))
        {
            filterContext.ExceptionHandled = true;
            filterContext.Result = RedirectToAction("ActionName", "ControllerName", new { customMessage  = "You may want to pass a custom error message, or any other parameters here"});
        }
        else
        {
            base.OnException(filterContext);
        }
于 2012-05-14T07:32:28.887 に答える