我最近不幸需要在 ASP.NET MVC 操作中找到错误的根本原因。错误结果出现在操作上声明的操作过滤器之一中。然而,发现这个错误主要是运气,而且花费的时间比合理的要多。将来,如何调试 ASP.NET MVC 操作过滤器的问题?
尤其:
- 如何找出针对特定请求执行的过滤器以及执行顺序?
- 我可以逐步通过这些过滤器吗?
- 我至少可以在每个过滤器之间执行一些钩子以帮助找到根本原因(例如通过跟踪某些状态)吗?
- 当过滤器中止请求或导致异常时,我可以挂钩一些事件吗?
我尝试使用 VS.NET 调试器;但是它不会以有用的方式进入过滤器。如果我在请求之前暂停执行,服务器会酌情等待调试器,但是当我随后使用 Step into 或 step over 时,它会继续执行而不单步通过任何过滤器(只是我的代码已关闭)。如果我事先知道注册了哪些过滤器,我可能可以设置一个断点,但这几乎不实用,尤其是因为某些过滤器在第三方代码中。