2012-06-20 66 views
0

我正在使用MVC3剃鬚刀應用程序。我創建了一個錯誤處理功能來記錄未處理的異常。波紋管:MVC3 - Razor:異常動作調用錯誤處理程序兩次

public class ErrorHandlingAttribute : HandleErrorAttribute 
{ 
    public override void OnException(ExceptionContext context) 
    {   
     base.OnException(context); 
     LogException(context); 
    } 
} 

在每個控制器我只需要爲波紋管添加錯誤處理程序:

[ErrorHandlingAttribute] 
public class HomeController : Controller 

它記錄的錯誤,但一些如何擊中了兩次OnException方法。然後它寫入重複的日誌。

任何人都可以告訴我它發生了什麼。

非常感謝

+0

也許你的HandleError異常?爲什麼你將它命名爲默認類? – Dragouf

+0

否沒有其他例外。我已經設置了斷點並記錄了兩次相同的異常。我已將其重命名爲'ErrorHandlingAttribute'。謝謝 – user1211185

+1

您是否禁用在Global.asax中添加爲全局操作篩選器的默認'HandleError'屬性? –

回答

2

您應該刪除默認情況下,在你的Global.asax註冊的默認HandleError屬性。您可以將其替換爲您的自定義屬性。

+1

啓用'HandleError'並禁用自定義屬性後,只寫一次例外日誌。但如果我用自定義屬性替換'HandleError',它會寫入兩次。 – user1211185

+2

可能是因爲您的自定義異常屬性來自HandleErrorAttribute :-)如果您不想要基本功能,則可以直接從'FilterAttribute'派生您的自定義屬性並實現'IExceptionFilter'接口。 –