Eam*_*nne 3 debugging asp.net-mvc
我最近不幸需要在 ASP.NET MVC 操作中找到错误的根本原因。结果发现错误出在动作上声明的动作过滤器之一中。然而,发现这个错误主要是靠运气,花费的时间比合理的要多。将来,我如何调试 ASP.NET MVC 操作过滤器的问题?
特别是:
我尝试使用 VS.NET 调试器;但是它不会以有用的方式进入过滤器。如果我在请求之前暂停执行,服务器会根据需要等待调试器,但是当我使用 Step into 或 step over 时,它只会继续而不通过任何过滤器(只是我的代码关闭)。如果我事先知道注册了哪些过滤器,我可能可以设置一个断点,但这几乎不切实际,特别是因为某些过滤器在第三方代码中。
以下代码将按照调用顺序写入控制器和动作的名称。我希望它也能帮助其他人,因为它对我帮助很大。
如果您有一个基本控制器并且其他控制器继承自它,那将会很棒,那么以下代码将让您知道为任何请求调用的所有控制器和操作。
#if DEBUG
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
string controller = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
string action = filterContext.ActionDescriptor.ActionName;
Debug.WriteLine("Controller-" + controller + ", Action-" + action);
}
#endif
Run Code Online (Sandbox Code Playgroud)
PS-如果您想要更多详细信息,例如操作的处理时间或某些可插拔系统,请使用Glimpse。只需几分钟即可使其运行。这是一个很棒的工具。附带说明一下,glimpse 提供的时间并不准确,因为还包括 Glimpse 的一些开销。