为什么HandleErrorAttribute在子操作上递归调用?

时间:2018-07-02 14:18:38

标签: c# asp.net-mvc-4 error-handling

我目前正在尝试通过装饰自Handle Error Attribute继承的动作名称上没有运气的自定义类,将Action应用于我的Child ActionHandleErrorAttribute

更具体地说,它在Action上工作正常,但在Child Action不是。我正在尝试调试并看到处理错误的方法以递归方式获取调用,直到调用堆栈溢出为止。我不知道该如何处理,希望您能在这个问题上给我更多的见解。

这是我的自定义错误处理程序:

public class MyCustomErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
             var controllerName = filterContext.RouteData.Values["controller"] as string;
            var actionName = filterContext.RouteData.Values["action"] as string;

            filterContext.ExceptionHandled = true;
             var model = new mymodel();
            filterContext.Result = new ViewResult()
            {
                ViewName = "Error",
                ViewData = new ViewDataDictionary(model)
            };
}
}

这是我的孩子的动作:

[ChildActionOnly]
[OutputCache(Duration = 60, VaryByCustom = "host")]
[MyCustomError]
public ActionResult Catalogues(bool catalogue = true)
{
            throw new Exception("test 2");
}

这是我的动作:

[MyCustomError]
public async Task<ActionResult> Index(int page = 1)
{
    throw new Exception("test");
}

我也推荐了this,但它不能作为公认的答案。

任何帮助将不胜感激!

谢谢。

0 个答案:

没有答案