1

私は3つのモデルのMVCで例外処理を行っています。

 public class CustomHandleErrorAttribute : HandleErrorAttribute
{  
    public override void OnException(ExceptionContext filterContext)
    {
       //logging           

    }
}

 public class Base_Application : System.Web.HttpApplication
{
    protected void Application_Error(object sender, EventArgs e)
    {

        //Logging
    }
}

   public class Base_Controller : Controller
{
    protected override void OnException(ExceptionContext filterContext)
    {
        //Logging;

    }

}

コードからサンプル例外をスローすると、とによってキャッチされCustomHandleErrorAttributeますBase_Controller

Base_Application私は例外をログに記録していますが、同じことがElmahによるログ記録です。

だから私はすべての場合に最善の方法を知りたいです。

4

1 に答える 1

1

ベースコントローラーをお持ちの場合は、このアプローチをお勧めします

public class CustomHandleErrorAttribute : HandleErrorAttribute
{  
    public override void OnException(ExceptionContext filterContext)
    {
       //logging           

    }
}

そして、カスタム属性でベースコントローラーを飾ります

[CustomHandleError]
public class Base_Controller : Controller
{

}

したがって、将来ベースコントローラーを必要としないコントローラーを追加する場合は、属性を再利用することもできます。

また、このすばらしい記事を読んで、ベースコントローラーとActionFilterのどちらを使用するかを決定してください。

Application_Errorイベントは、ページレベルのエラーハンドラーによってキャッチされないエラーをキャッチするために使用できます。

于 2013-03-27T12:27:39.377 に答える