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

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

我想通过在我的操作方法执行之前执行的一些方法中放置断点来了解 ASP.NET MVC 的模型绑定(bind)器是如何工作的。例如将它们放在 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 的代码中放置断点。

最佳答案

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

  • 设置 VS 以从符号服务器加载符号。
  • 在您的应用程序中设置断点
  • 当断点被命中时,打开模块窗口并设置 System.Web.Mvc.dll 自动加载其符号文件
  • 在 Debug模式下再次运行应用程序。当断点被命中时,打开调用堆栈窗口。选择 System.Web.Mvc.dll 中有趣的行。应该对比这些行,这意味着它们的来源是可用的(我猜)。
  • 右键单击该行并选择“转到源代码”。将打开一个对话框,希望您找到源文件。
  • 我有 System.Web.Mvc 的源代码,所以我打开源文件。
  • 在里面设置一些断点。
  • 在 Debug模式下再次运行应用程序。现在 System.Web.Mvc 中的那些断点将被命中。
  • (我假设我可以在 VS 中打开 System.Web.Mvc 中的任何源文件并在其中设置断点,它们会被命中。我假设断点也会被命中,即使我的文件与原始位置不在同一位置符号文件,因为我关闭了“要求源文件与原始版本完全匹配”设置。我需要验证这些假设)
  • 关于asp.net-mvc - 如何在启动应用程序之前在 system.web.mvc 中放置断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32941655/

    相关文章:

    jquery - 如何从客户端禁用 DevExpress MVC 组合框 (JS/JQuery)

    jQuery 文件路径参数

    c# - 在 Visual Studio 2013 中调试时看不到类级变量

    c# - 当我们没有该 dll 的源代码时,如何在 Visual Studio 中调试非托管 dll?

    .net - 如何保存生成的符号文件?

    jquery - 客户端验证不适用于重用和嵌套的复杂属性

    javascript - 如何在子页面帖子的父页面中重新加载部分 View

    java - 为什么在类之间传递对象时它会变为空?

    django - 什么是 Django 的 TEMPLATE_DEBUG 设置?

    c++ - 在什么情况下您必须进行调试构建?