我正在记录OnException方法中发生的所有错误。
如何查找发生错误的控制器/操作?
答案 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应用程序中发生异常,此方法都会有所帮助。