29

尝试调试 ASP.NET MVC 应用程序时,我的控制器中的断点没有被命中。进入调试模式时,它们只显示一个带有警告三角形的空红色圆圈,而不是正常的完整圆圈。这很奇怪,因为到目前为止调试工作正常,并且有一段时间没有在我的环境中进行任何配置更改。

我已经看到了这个问题并查看了我的模块视图,但没有加载正确的模块视图,但是我不确定如何解决这个问题。此外,所有相关的 pdb 文件都在站点的 bin 文件夹中。

对于如何解决这个问题,有任何的建议吗?

干杯!

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

4

20 回答 20

40

好的,在浪费了 4 个小时之后,我发现将我的 web 项目设置为启动项目解决了这个问题!这肯定是个bug……

我希望我在那里救人半天:)

于 2009-04-09T04:44:57.953 回答
11

更多可能性:

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

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

于 2010-09-09T03:44:51.077 回答
5

一些团队成员删除了一个项目(MVC 项目)的调试配置。虽然解决方案配置设置为“调试/AnyCPU”,但如果您查看配置,MVC 项目的项目配置设置为发布,没有调试选项,所有其他项目都设置为调试适当.

所以我将调试添加回项目配置(只需下拉“添加”......取消选中该框以添加到解决方案)。还有中提琴...

于 2016-02-23T17:51:04.887 回答
5

我有同样的问题。检查这里:工具->选项->调试

通过选择启用 .Net Framework 源步进进行修复

于 2017-02-19T22:09:19.947 回答
3

要尝试的事情:

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

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

  3. 如果这不起作用,请在执行步骤 #2 后重新启动 IDE。
  4. 如果您正在调试由 IIS 托管的 ASP.NET 项目,请确保您已附加到正确的进程 ( w3wp.exe)。
于 2009-04-09T03:33:53.570 回答
3

这些答案都没有帮助我。我的一些断点被击中,有些没有。但我发现了我的问题。

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

于 2014-08-23T17:07:24.273 回答
1

当我遇到这个问题时,以下内容大部分时间都对我有用:

查找项目 dll 缓存的保存位置(通常在 ASP.NET 临时文件中)。然后关闭 VS,执行 IISRESET /stop(如果您使用的是 IIS),删除 dll 缓存中的所有文件。做一个IISRESET,启动VS,打开你的项目并重建它。

于 2009-04-09T03:40:37.827 回答
1

将 Visual Studio Header Release 选项更改为 Debug

于 2017-08-13T09:45:34.423 回答
1

大多数时候,您的解决方案已更改为调试到发布模式。

https://www.youtube.com/watch?v=Tc-EamOXAcQ

于 2021-07-02T10:49:04.570 回答
0

我有同样的问题。检查这里:工具->选项->调试

选中脚本复选框。运行应用程序。

我得到了安装损坏的消息框,vs 2008 的修复也是如此,它现在可以工作了。

于 2009-10-13T03:26:10.650 回答
0

我今天遇到了这个问题 - 然后发现它发生的原因是:

  1. Visual Studio 2008 崩溃了,Cassini(内部开发 Web 服务器)在原始端口上运行。

  2. 当我重新打开我的项目并“启动”它时,它无法在原始端口上运行,因为旧的开发 Web 服务器仍在运行(我没有注意到)

  3. 页面浏览良好,但没有遇到断点,因为我使用的 URL 仍然指向旧的开发 Web 服务器端口。

于 2010-05-20T11:03:20.990 回答
0

清洁/重建对我不起作用。重新启动VS。

VS 2012,ASP.NET MVC 3,IIS Express。

于 2013-07-31T13:52:47.673 回答
0

确保您的编译框架版本与您项目的编译框架版本相同。我遇到了这个问题,这是因为该项目正在编译为 4.5,并且 Web 配置中的编译属性试图将其调试为 4.5.1。

于 2015-06-07T20:52:17.647 回答
0

它可能有助于:

  1. 关闭 Visual Studio
  2. 在 IIS 管理器中停止应用程序池
  3. 删除 bin 和 obj 文件夹
  4. 启动应用程序池
  5. 打开 Visual Studio 并重建解决方案
于 2015-10-02T06:54:28.943 回答
0

我在 Visual Studio 2015 中的一个简单的 Web API 项目中遇到了类似的问题。在阅读了简单的解决方法是将启动项目设置为正确的项目之后,我解决了这个问题。由于我在同一个解决方案中有另一个 Web API 项目,我猜测我正在调试的项目混淆了要调试的 index.html,因此我将当前的项目重命名为 index2.html。然后将项目属性 Web 选项卡设置为特定页面和页面文本:“index2.html”解决了这个问题。

于 2016-10-24T15:11:43.980 回答
0

我的解决方案基本上是我的错误,因为我移动了项目文件夹。我的决议是,在我移动文件夹后,不要使用“打开...打开网站”,然后浏览到您的网站文件夹。不要浏览到您的解决方案.sln文件并用它打开。相反,请使用“打开...项目/解决方案”,然后浏览到您的 csproj 文件并打开它。首先关闭 IIS(Express)。重建。它应该运行最新的副本。每次都会把.sln你搞砸。

于 2017-05-24T15:19:39.137 回答
0

我搁置了我在 TFS 中的更改,并在搁置的 cs 文件上设置了一个断点,该文件不再是解决方案的一部分。一旦我取回了我的 Shelveset,一切正常。

于 2018-10-23T14:24:26.027 回答
0

快速解决...

在调试中运行我的项目。清理和重建解决方案 (MVC)。

重新运行 UI 项目,断点再次开始工作。

希望这会对某人有所帮助。

于 2020-01-11T12:43:15.207 回答
0

我已阅读并实施了上述所有建议,但无济于事。

对我有用的是,我只是将我试图闯入的控制器操作更改为 [HttpPost]。

我的问题是我试图调试一个装饰有 [HttpGet] 属性的方法路由到不同的视图,而不是达到我的断点,它继续路由并显示返回视图。

希望这对某人有帮助!

快乐编码。

于 2020-04-29T23:59:25.710 回答
0

我发现项目属性窗口“构建”选项卡上的“优化代码”复选框也会导致这种情况发生。

也取消选中此复选框。

优化项目属性的构建选项卡上的代码复选框

于 2021-12-16T12:51:36.303 回答