【问题标题】:MVC3 - Razor: On exception action calling the error handler twiceMVC3 - Razor:在异常操作上调用错误处理程序两次
【发布时间】:2012-06-20 08:59:34
【问题描述】:

我正在开发一个 MVC3 剃须刀应用程序。我创建了一个错误处理功能来记录未处理的异常。如下:

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

我只需要在每个控制器上添加错误处理程序,如下所示:

[ErrorHandlingAttribute]
public class HomeController : Controller  

它记录了错误,但它如何两次击中OnException 方法。然后它会写入重复的日志。

谁能告诉我发生了什么。

非常感谢

【问题讨论】:

  • 可能是您的 HandleError 异常?为什么你把它命名为默认类?
  • 否 没有其他异常。我已经设置了断点,并且两次记录了相同的异常。我已将其重命名为“ErrorHandlingAttribute”。谢谢
  • 您是否禁用了默认的HandleError 属性,该属性是作为全局操作过滤器添加到 Global.asax 中的?
  • @DarinDimitrov 成​​功了。我只是把它注释掉了,它起作用了。谢谢
  • 您能否建议我在全球范围内保留哪一个。 ErrorHandlingAttributeHandleErrorAttribute?

标签: asp.net-mvc-3 c#-4.0 razor elmah


【解决方案1】:

您应该删除默认注册在您的Global.asax 中的默认HandleError 属性。您可以将其替换为您的自定义属性。

【讨论】:

  • 启用HandleError 并禁用自定义属性后,它只写入一次异常日志。但是如果我用自定义属性替换HandleError,它会写两次。
  • 可能是因为您的自定义异常属性派生自 HandleErrorAttribute :-) 如果您不想要基本功能,您可以直接从 FilterAttribute 派生自定义属性并实现 IExceptionFilter 接口。跨度>
猜你喜欢
  • 1970-01-01
  • 2018-08-19
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 1970-01-01
  • 1970-01-01
  • 2015-03-29
  • 1970-01-01
相关资源
最近更新 更多