gpt4 book ai didi

error-handling - 仅第一个MVC ErrorHandler属性应运行

转载 作者:行者123 更新时间:2023-12-03 07:54:35 25 4
gpt4 key购买 nike

我正在尝试使用MVC自定义错误,以便仅记录意外的 Controller 错误。

为此,我创建了一个'HandleAndLogError'属性,该属性继承自HandleErrorAttribute。如果方法上的其他错误处理程序属性未覆盖该异常,则仅希望运行HandleAndLogError属性。

例如:

[HandleAndLogError(View = "Error", Order = -1)]
public class MyController : Controller
{
[HandleErrorWithoutLogging(ExceptionType = typeof(InvalidOperationException), View = "Error", Order = 0)]
public ActionResult SomeAction()
{
...
}
}

当SomeAction引发InvalidOperationException时,我只希望HandleErrorWithoutLogging来处理它。
但是,发生的情况是先运行HandleErrorWithoutLogging,然后再运行HandleAndLogError。

有没有一种简单的方法可以使第一个错误处理程序阻止其他人运行?

最佳答案

我弄清楚哪里出了问题,事实证明这很简单。在传递给处理程序的上下文中有一个ExceptionHandled标志,该标志在运行基本代码时会设置为true。我只需要用if块包装我的代码。

对于任何想知道的人,这就是我最终得到的结果:

public class HandleErrorWithLoggingAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
if(!filterContext.ExceptionHandled)
{
base.OnException(filterContext);

if (filterContext.ExceptionHandled)
{
...
}
}
}
}

关于error-handling - 仅第一个MVC ErrorHandler属性应运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26720227/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com