如何在启动应用程序之前在system.web.mvc中放置断点?

时间:2015-10-05 05:09:04

标签: asp.net-mvc debugging visual-studio-debugging

我想通过在执行action方法之前执行的某些方法中放置断点来了解ASP.NET MVC的模型绑定器是如何工作的。例如,将它们放在DefaultModelBinder类中。我经历了将一些MVC项目源添加到我的解决方案中的路径(如System.Web.MVC,System.Web.Razor,System.Web.WebPages,System.Web.Helpers ...),这样我就可以运行我的版本了他们在我喜欢的地方放置了断点,但我收到了一个错误“Could not load file or assembly 'System.Web.Mvc' or one of its dependencies. Strong name signature could not be verified"。我使用的是第三方签名的组件,它引用了System.Web.MVC,我认为这是导致错误的原因。

在我的代码运行之前,还有其他方法可以跟踪System.Web.MVC代码吗?我知道设置Visual Studio以从符号服务器获取相关符号,但我不知道如何在我自己的代码运行之前在.NET代码中放置断点。

1 个答案:

答案 0 :(得分:1)

我能够设置断点,他们会被击中。

  • 设置VS以从符号服务器加载符号。
  • 在您的应用中设置断点
  • 点击断点后,打开“模块”窗口并设置System.Web.Mvc.dll以自动加载其符号文件
  • 在调试模式下再次运行应用程序。当命中断点时,打开“调用堆栈”窗口。选择System.Web.Mvc.dll中有趣的行。这些线应该对比,这意味着它们的来源可用(我猜)。
  • 右键单击该行,然后选择“转到源代码”#39;。将打开一个对话框,要求您找到源文件。
  • 我有System.Web.Mvc的源代码,所以我打开源文件。
  • 在其中设置一些断点。
  • 在调试模式下再次运行应用程序。现在,System.Web.Mvc中的那些断点将被击中。
  • (我假设我可以在VS中的System.Web.Mvc中打开任何源文件,并在其中设置断点,它们会被命中。我假设即使我的文件不在同一个位置,断点也会被击中符号文件中的原始位置,因为我要求源文件与原始版本'设置完全匹配。我需要验证这些假设)