2009-08-19 20 views
2

想要爲asp.net mvc web應用程序提供快速簡單的錯誤處理建議。極簡主義的錯誤處理方法

+0

最快和最簡單的方法是: 別! ...但當然,不建議使用此解決方案... – 2009-08-19 04:01:13

回答

4

ELMAH與擴展HandleError並通過ELMAH記錄錯誤的屬性一起使用。有關如何使HandleError屬性與ELMAH一起使用的一些想法,請參見question/answer。丹Swatik也blogged關於這個與基於該問題接受的答案的實現。

1

檢查書呆子晚餐樣本。它使用非常簡潔的方法。

1

我最近剛剛僱用了我自己的一個非常快速的正髒錯誤報告的解決方案,可能會給你一些想法...

創建基礎控制器類,讓我們把它叫做MyBaseController。如果你喜歡的話,讓所有的控制器都繼承這個,儘管如果你只有一個控制器的話,這是不必要的。

然後,您可以覆蓋其部分OnException方法並插入您可能喜歡的任何類型的錯誤報告,例如向自己發送一封包含例外的ToString()的電子郵件。例如:在學習這一切http://blog.dantup.me.uk/2009/04/aspnet-mvc-handleerror-attribute-custom.html ...

好運:

public MyOwnBaseController : Controller 
    protected override void OnException(ExceptionContext context) 
    { 
     SendAdminErrorAlert("Egads! An Error!", context.Exception.ToString()); 
     // I have a view named "500.aspx" that I will now show... 
     context.ExceptionHandled = true; 
     this.View("500").ExecuteResult(this.ControllerContext); 
    } 
} 

我還發現這篇文章對大家有所幫助!
-f!

+0

PS,您可以實現與您在控制器上應用的屬性幾乎相同的'quick-n-dirty'結果(您可以繼承內部HandleErrorAttribute,即[ HandleError])的代碼數量幾乎相同...... – Funka 2009-08-19 06:19:28

2

,您仍然可以使用舊的Application_Error事件在Global.asax

protected void Application_Error(object sender, EventArgs e) 
{ 
    // some good info in Server.GetLastError().GetBaseException() and Context.Request 
    // that you can use in whatever you choose for 
    // your quick and easy logging/reporting 
} 

很顯然,你要打開的customErrors太...

<customErrors mode="RemoteOnly" defaultRedirect="~/error"> 
    <error statusCode="403" redirect="~/error/forbidden" /> 
    <error statusCode="404" redirect="~/error/notfound" /> 
    <error statusCode="500" redirect="~/error" /> 
</customErrors>