调试ASP.NET MVC应用程序时,断点没有被触发

28

尝试调试一个ASP.NET MVC应用程序时,我的控制器中的断点没有被触发。进入调试模式后,它们只显示一个空的红色圆圈和一个带有警告三角形的标记,而不是正常的完整圆圈。这很奇怪,因为调试一直很正常,而且环境中长时间没有进行任何配置更改。

我看到了这个问题,检查了我的模块视图,并且正确的模块没有被加载,但我不知道如何解决这个问题。另外,所有相关的pdb文件都在站点的bin文件夹中。

有什么建议可以修复这个问题吗?

谢谢!

编辑:应用程序在IIS7上作为本地站点运行,我使用VS 2008进行调试。


只有当我修改代码并放置断点而没有重新编译时才会发生这种情况...请确保重新构建你的解决方案。 - Daniel Sloof
我已经尝试过了,谢谢。 - Darko
或者你正在编辑错误的控制器/视图,就像我一样。 - TheTechGuy
可能是Visual Studio断点无法被命中的重复问题。 - Michael Freidgeim
1
@MichaelFreidgeim 这不是重复的问题。问题不同,而且这个问题/答案比你建议的那个问题早了5年。 - Darko
显示剩余2条评论
20个回答

41

好的,经过4个小时的浪费,我发现将我的Web项目设置为启动项目解决了这个问题!这肯定是一个错误...

我希望我能够帮助到某个人节省半天时间 :)


6
在VS2010中,项目本来就是启动项目,但是将启动操作从“不打开页面。等待外部应用程序的请求”更改为“当前页面”可以使其起作用。(然后,当我将其设置回原始设置时,它仍然可以正常工作。)关于此问题,有一些东西会重置符号问题。很奇怪。 - Joshua Frank
同样的事情也适用于VS 2013。 - CathalMF
1
我很高兴你注意到了改变启动项目会改变调试器对断点的处理方式。但很抱歉,这也解释了我在最新版本的Visual Studio中调试MVC时经常遇到的混乱情况。 - Hardryv

11

还有一些可能性:

  • 如果您的解决方案中有客户端和服务器(比如一个WPF和WCF应用程序),您应该确保选择“多个启动项目”。 [这个与您已接受的答案类似,但如果您需要运行客户端,则非常有用]

  • 为项目选择了发布模式。当在新计算机上进行新的获取操作时(正如我今天所发现的那样),VS似乎喜欢切换到“发布”配置文件。


5
我有同样的问题。请在这里检查:工具 -> 选项 -> 调试
通过选择启用 .Net Framework 源代码步进来修复。

我不这么认为。那样只会让你在框架代码中进行调试,因此你将看到它加载大量的dll作为符号。你应该使用“仅限我的代码”。 - Savage

5

有一位团队成员删除了一个项目(MVC项目)的调试配置。尽管解决方案配置设置为“Debug / AnyCPU”,但如果查看该配置,MVC项目的项目配置被设置为Release,没有Debug选项,而所有其他项目都已适当地设置为Debug。

所以我将Debug重新添加到项目配置中(只需下拉菜单中选择“添加”...取消加入解决方案的复选框)。然后就好了...


3

这些答案都没有帮到我。我的一些断点被命中,而有些则没有。但是在我的情况下,我发现了问题所在。

如果在您尝试调试的URL的精确虚拟位置上有一个与名称完全相同的文件,则IIS会自动将该文件提供给浏览器,并且不会命中断点,因为实际上没有运行任何MVC代码。


3

尝试以下几种方法:

  1. 清理解决方案,然后重新构建。

  2. 如果这不起作用,请关闭解决方案,删除 binobj 文件夹,然后重新构建。

  3. 如果这还不起作用,请在执行步骤 #2 后重启 IDE。
  4. 如果您正在调试由 IIS 托管的 ASP.NET 项目,请确保已连接到正确的进程 (w3wp.exe)。

1
以下方法在我遇到这个问题时大多数情况下都有效:
找到你的项目dll缓存所在的位置(通常在ASP.NET临时文件夹中)。然后关闭VS,执行IISRESET /stop命令(如果你正在使用IIS),删除dll缓存中的所有文件。执行IISRESET命令,启动VS,打开你的项目并重新构建它。

我尝试了一下,但是同样的问题仍然存在,在模块视图中没有适用于我的Web项目的模块。 - Darko

1

1

将Visual Studio头文件选项从发布更改为调试


0

快速修复...

在调试模式下运行我的项目。 清理并重新构建解决方案(MVC)。

重新运行UI项目,断点又开始工作了。

希望这能帮助到某些人。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接