我正在使用ASP.NET MVC项目,该项目在连接到IIS进程(w3wp.exe)时似乎遇到了一些问题。我在我自己的本地计算机上运行解决方案和IIS 8.5,所以我不认为这与我们的网络有任何关系。对我来说很奇怪的是,我能够在我本地调试的任何其他解决方案上达到断点。
我所拥有的问题是,断点转向红色,空心圆圈,永远不会被击中。通常,对此的修复是对解决方案的清理/重建,但这没有奏效。我已经确认通过向页面添加“throw new Exception”并确保它显示异常来更新代码。同样,这个问题只发生在这个问题上。我运行调试器的任何其他解决方案都可以正常工作。我也尝试重新启动应用程序池,网站,IIS以及我的计算机。
我读过的一些文章提到反病毒程序可以阻止远程调试器访问进程。但是,整个设置都包含在我的本地计算机上,因此听起来不像是问题。它确实让我有点担心,因为我们最近聘请了一位新的IT人员,他们对每个人的机器进行了很多改动。
另外一点是添加这个Web应用程序的独特之处是IIS中的绑定。绑定是“*”,以便利用与子域相关的一些自定义功能。
与此同时,我将继续寻找解决方案,但如果有人有任何想法可能导致这个解决方案无法正确调试我真的很感激。
编辑:找到建议删除ASP.NET临时文件的解决方案。没运气。
在我的场景中,我在一个解决方案中有一个MVC应用程序和Web API,我正在使用本地IIS(不是快速)。
我还在IIS中将站点设置为真实域,并编辑了我的主机文件,以便我可以输入真实域,一切正常。我还注意到两件事:
这是我的解决方案:
右键单击webapi项目>属性> Web>项目URL
默认情况下,它指向localhost,但由于我在IIS中设置了该站点,我忘记将URL更改为网站域(即,而不是locahost,它应该说http:// {domain-name} /)。
我的解决方案中的一个项目设置为发布模式。我将其更改回调试模式,现在正在打破断点。
如果以上都不起作用,请仔细检查您的代码。有时,断点似乎没有命中的原因是由于包含断点的代码块有时无意中被执行。
例如,在复制和粘贴代码时忘记“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
如果您尚未在VS2017中登录Microsoft帐户,则无法在连接到IIS进程时命中断点。
在我的情况下,实际过程与原始启动过程不同。
通常我们通过w3wp.exe
进程绑定本地托管的服务。在我的例子中,使用了自定义过程。改变到那就解决了问题。
还有一件事,从Release模式更改为Debug模式。在发布模式下,PDB文件未使用断点详细信息进行更新。因此,请确保在调试模式下调试应用程序。
右键单击您的项目,然后左键单击“属性”,并选择“Web”选项卡。调试器> ASP.NET
启用“托管兼容模式”。转到工具 - >选项 - >调试并启用托管兼容模式。
我一直在努力解决这个问题。最后这就是为我做的事情。
选择Debug-> Options-> Debugging-> General
Tick启用.NET Framework源步进。
(这可能是您需要做的所有事情,但如果您像我一样,您还必须执行下面所述的操作。下面的解决方案还将修复项目加载旧程序集/ .pdb文件的错误,尽管重建和清理。)
选择工具 - >选项 - >项目和解决方案 - >构建和运行,
取消选中“仅在运行时构建启动项目和依赖项”复选框,
从“运行时,项目已过期”下拉列表中选择始终构建。
我知道这不是OP的问题,但我在项目上发生了这种情况。该解决方案有多个MVC项目,错误的项目被设置为启动。
我还设置了项目的配置,只是启动进程/调试器,而不是打开一个新的浏览器窗口。
所以表面上看起来好像调试器正在启动,但是对于错误的进程它是这样做的。因此请检查并记住您也可以附加到多个进程。
愚蠢的错误让我摸不着头脑约30分钟。
右键单击您的项目,然后左键单击“属性”,并选择“Web”选项卡。
验证是否为您的案例选择了正确的服务器:
转到Visual Studio菜单:
调试 - >附加到进程
然后单击“选择”按钮,如下图所示:
然后确保选中“自动确定要调试的代码类型”选项,如下所示:
通过取消选中,解决了这个问题
属性>构建>优化代码
在网页属性屏幕上设置(在常规下)。
如果有人使用Visual Studio 2017和IIS并且正在尝试调试网站项目,则以下内容适用于我:
inetpub/wwwroot
目录中选择项目。http(s):// localhost /(IIS中显示的网站名称)
例如:http://localhost/MyWebSite
而已!不要忘记确保网站在IIS上运行,并且您要调试的网站被选为启动项目(右键单击 - >设置为启动项目)。