我们在BaseController中使用OnException虚方法来记录我们的异常。
但是我们怎样才能得到异常来源的控制器动作和参数?
答案 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 是您要寻找的。 p>