現在、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);
}
それが正しい方法であることを確認したいだけです!
時間をありがとう