在Controller.OnException中获取操作和操作参数

时间:2011-09-22 11:12:02

标签: asp.net-mvc exception-handling

我们在BaseController中使用OnException虚方法来记录我们的异常。

但是我们怎样才能得到异常来源的控制器动作和参数?

3 个答案:

答案 0 :(得分:26)

您可以从ExceptionContext对象获取所有这些数据。

例如,使用此代码,您可以获得控制器,操作和所有其他路由参数:

context.RouteData.Values

使用此代码可以获取查询字符串参数:

context.HttpContext.Request.QueryString

并且finnaly形成参数:

context.HttpContext.Request.Form

答案 1 :(得分:17)

protected override void OnException(ExceptionContext filterContext)
{
    string action = filterContext.RouteData.Values["action"].ToString();
    string controller = filterContext.RouteData.Values["controller"].ToString();
}

答案 2 :(得分:0)

就动作参数而言,您将需要显式传递它们。

  

我们没有在ExceptionContext上提供操作参数,因为它通常是空的。

来源:https://github.com/aspnet/Mvc/issues/6154

哪个是愚蠢的IMO。

更新:您可以使错误处理程序类实现ActionFilterAttribute,该实现实现:
public virtual void OnActionExecuting(ActionExecutingContext filterContext)

其中的filterContext。 ActionParameters 是您要寻找的。