如何查找发生错误的控制器/操作?

时间:2010-05-05 02:44:06

标签: asp.net asp.net-mvc error-handling

我正在记录OnException方法中发生的所有错误。

如何查找发生错误的控制器/操作?

3 个答案:

答案 0 :(得分:60)

正如Charlino所暗示的那样,这些值可以从ExceptionContext参数中获得:

protected override void OnException(ExceptionContext filterContext)
{
    var controllerName = filterContext.RouteData.Values["controller"];
    var actionName = filterContext.RouteData.Values["action"];

    // ...

    base.OnException(filterContext);
}

答案 1 :(得分:-2)

检查异常的调用堆栈。

例如:

var actionMethod = new StackTrace(exception)
    .GetFrames().FirstOrDefault(f => 
        typeof(IController).IsAssignableFrom(f.GetMethod().DeclaringType)
    ).GetMethod();

答案 2 :(得分:-4)

在global.asax中添加以下方法并在其上加上断点

public void Application_Error(object sender, EventArgs e)
    {


    }

无论应用程序在何处发生错误,都会触发此方法的断点。从这里,您可以在快速监视窗口中看到以下表达式的值,您将知道发生异常的原因究竟是什么

((System.Web.HttpApplication)(sender)).Context.AllErrors

无论Web应用程序中发生异常,此方法都会有所帮助。