2012-06-20 41 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'接口。 –