3

現在、vs2012 で mvc4 を使用しており、mvc.elmah ナゲットをインストールして完了しました。

私がしたこと ?

最初はコードを書いていなかったので、私の例外は ELMAH に記録されました。

後で、MVC HandleError を使用してアプリケーション例外を処理し、フィルターを追加することにしました

  filters.Add(new HandleErrorAttribute());

今、フィルターでデバッグし、2 つのフィルターがあることを確認しました。ELMAH HandleErrorAttribute and MVC HandleErrorAttribute !

この優れたリンクhttps://stackoverflow.com/a/5936867/1481690を見ました。これは、ErrorSignal を使用してアプリケーション例外を処理することについて説明しています。

しかし、使用していませんErrorSignalが、それでも私の例外は ELMAH によってキャプチャされますか?

私が使用する場合

if (context.ExceptionHandled)
            ErrorSignal.FromCurrentContext().Raise(context.Exception);

例外が 2 回ログに記録されます。

私の質問は次のとおりです

  • 2 つのフィルター (ELMAH と MVC) を使用する必要がありますか?
  • ELMAH に既に HandleErrorAttribute があり、例外がログに記録されている場合。MVC HandleErrorAttribute を追加する必要がありますか?

現在行っているのは

追加されたフィルター

filters.Add(new HandleErrorAttribute());

およびオーバーライド (将来的に Ajax エラーを処理するため)

public class HandleErrorAttribute : System.Web.Mvc.HandleErrorAttribute
    {
        public override void OnException(ExceptionContext context)
        {
 base.OnException(context);
}

これで十分ですか、それとも良い習慣は何ですか? 2 回ログに記録されているため、ErrorSignal を上げていません。

以下の行を使用しているため、何も使用していませんtry.catch。私の例外が処理されることを願っています。

base.OnException(context);

}

それが正しい方法であることを確認したいだけです!

時間をありがとう

4

2 に答える 2