Visual Studio断点没有被击中

问题描述 投票:45回答:17

我正在使用ASP.NET MVC项目,该项目在连接到IIS进程(w3wp.exe)时似乎遇到了一些问题。我在我自己的本地计算机上运行解决方案和IIS 8.5,所以我不认为这与我们的网络有任何关系。对我来说很奇怪的是,我能够在我本地调试的任何其他解决方案上达到断点。

我所拥有的问题是,断点转向红色,空心圆圈,永远不会被击中。通常,对此的修复是对解决方案的清理/重建,但这没有奏效。我已经确认通过向页面添加“throw new Exception”并确保它显示异常来更新代码。同样,这个问题只发生在这个问题上。我运行调试器的任何其他解决方案都可以正常工作。我也尝试重新启动应用程序池,网站,IIS以及我的计算机。

我读过的一些文章提到反病毒程序可以阻止远程调试器访问进程。但是,整个设置都包含在我的本地计算机上,因此听起来不像是问题。它确实让我有点担心,因为我们最近聘请了一位新的IT人员,他们对每个人的机器进行了很多改动。

另外一点是添加这个Web应用程序的独特之处是IIS中的绑定。绑定是“*”,以便利用与子域相关的一些自定义功能。

与此同时,我将继续寻找解决方案,但如果有人有任何想法可能导致这个解决方案无法正确调试我真的很感激。

编辑:找到建议删除ASP.NET临时文件的解决方案。没运气。

asp.net-mvc visual-studio iis visual-studio-2013 visual-studio-debugging
17个回答
61
投票

解决了。结束是在调试菜单中选择的错误配置。我错误地将其切换到无法加载文档符号的发布配置。将它切换到调试配置,现在断点就好了。

要添加Abacus下面提到的内容,它也可能是一个搞乱你的构建的web.config转换。在我们的例子中,我们有Release配置从web.config的编译部分删除debug属性。下面是一个示例和Visual Studio的构建配置下拉列表的屏幕截图。

注意:还要确保您的平台与配置一致。在我的情况下,Dev.Debug|Mixed Platforms没有正确构建解决方案,但Dev.Debug|Any CPU将。

Build Configuration List


1
投票

在Visual Studio 2017中,您需要确保未处于发布配置模式。

  1. 打开构建菜单ddl
  2. 单击配置管理器
  3. 从'release'更改为'debug'

configuration manager debug


1
投票

在我的场景中,我在一个解决方案中有一个MVC应用程序和Web API,我正在使用本地IIS(不是快速)。

我还在IIS中将站点设置为真实域,并编辑了我的主机文件,以便我可以输入真实域,一切正常。我还注意到两件事:

  1. MVC代码调试工作得很好。
  2. 附加工艺也很完美。就在我调试的时候,它没有在我的API中遇到断点。

这是我的解决方案:

右键单击webapi项目>属性> Web>项目URL

默认情况下,它指向localhost,但由于我在IIS中设置了该站点,我忘记将URL更改为网站域(即,而不是locahost,它应该说http:// {domain-name} /)。


1
投票

我的解决方案中的一个项目设置为发布模式。我将其更改回调试模式,现在正在打破断点。


0
投票

如果以上都不起作用,请仔细检查您的代码。有时,断点似乎没有命中的原因是由于包含断点的代码块有时无意中被执行。

例如,在复制和粘贴代码时忘记“Handles Me.Load”已经让我有几次了:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
    --this block of code will not execute
    End Sub 

VS

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    --this block executes
    End Sub

0
投票

如果您尚未在VS2017中登录Microsoft帐户,则无法在连接到IIS进程时命中断点。


0
投票

在我的情况下,实际过程与原始启动过程不同。

通常我们通过w3wp.exe进程绑定本地托管的服务。在我的例子中,使用了自定义过程。改变到那就解决了问题。

还有一件事,从Release模式更改为Debug模式。在发布模式下,PDB文件未使用断点详细信息进行更新。因此,请确保在调试模式下调试应用程序。


0
投票

右键单击您的项目,然后左键单击“属性”,并选择“Web”选项卡。调试器> ASP.NET


0
投票

在我的情况下,此解决方案很有用:

解决方案:在调试/常规设置中禁用“仅我的代码”选项。

![enter image description here

参考:c-sharpcorner


29
投票

启用“托管兼容模式”。转到工具 - >选项 - >调试并启用托管兼容模式。


17
投票

我一直在努力解决这个问题。最后这就是为我做的事情。

选择Debug-> Options-> Debugging-> General

Tick启用.NET Framework源步进。

(这可能是您需要做的所有事情,但如果您像我一样,您还必须执行下面所述的操作。下面的解决方案还将修复项目加载旧程序集/ .pdb文件的错误,尽管重建和清理。)

选择工具 - >选项 - >项目和解决方案 - >构建和运行,

取消选中“仅在运行时构建启动项目和依赖项”复选框,

从“运行时,项目已过期”下拉列表中选择始终构建。


16
投票

我知道这不是OP的问题,但我在项目上发生了这种情况。该解决方案有多个MVC项目,错误的项目被设置为启动。

我还设置了项目的配置,只是启动进程/调试器,而不是打开一个新的浏览器窗口。

所以表面上看起来好像调试器正在启动,但是对于错误的进程它是这样做的。因此请检查并记住您也可以附加到多个进程。

愚蠢的错误让我摸不着头脑约30分钟。


9
投票

右键单击您的项目,然后左键单击“属性”,并选择“Web”选项卡。

验证是否为您的案例选择了正确的服务器:

  • 美国地方政府
  • 美国快递

4
投票

我在Xamarin.Forms项目中遇到了同样的问题。该修复程序是手动将PCL从.NET 4.6转换为.NET Standard 2.0。

对于Visual Studio Mac:确保为每个项目执行此操作

mac-screenshot


3
投票

转到Visual Studio菜单:

调试 - >附加到进程

然后单击“选择”按钮,如下图所示:

然后确保选中“自动确定要调试的代码类型”选项,如下所示:


2
投票

通过取消选中,解决了这个问题

属性>构建>优化代码

在网页属性屏幕上设置(在常规下)。


1
投票

如果有人使用Visual Studio 2017和IIS并且正在尝试调试网站项目,则以下内容适用于我:

  1. 将网站项目附加到IIS。
  2. 使用文件 - >添加 - >现有网站...将其添加到解决方案中,然后从inetpub/wwwroot目录中选择项目。
  3. 右键单击解决方案资源管理器中的网站项目,然后选择“属性页” - >“启动选项”
  4. 单击特定页面并选择启动页面(对于服务使用Service.svc,对于网站使用Default.aspx或您选择的页面的自定义名称)。
  5. 单击“使用自定义服务器并编写”

http(s):// localhost /(IIS中显示的网站名称)

例如:http://localhost/MyWebSite

而已!不要忘记确保网站在IIS上运行,并且您要调试的网站被选为启动项目(右键单击 - >设置为启动项目)。

原帖:How to Debug Your ASP.NET Projects Running Under IIS

© www.soinside.com 2019 - 2024. All rights reserved.