ASP.NET 应用程序调试:断点当前未命中
Posted
技术标签:
【中文标题】ASP.NET 应用程序调试:断点当前未命中【英文标题】:ASP.NET App Debug: Breakpoint currently not hit 【发布时间】:2011-06-14 14:32:44 【问题描述】:我想使用 Visual Studio 2008 和 IIS7 调试 ASP.NET 应用程序(自定义 IHttpHandler)。
我编译源代码,开始调试 (F5) 并加载 IE。但是我的断点(在 ProcessRequest() 方法中)被禁用。我得到了错误:
当前不会命中断点。 没有为此文档加载任何符号。
我对 ASP.NET 编程一无所知。我必须在 IIS 中设置什么吗?
PDB 文件在那里。我想检查我的 DLL 的符号加载状态,但找不到。
当我打开“Debug->Windows->Modules”时,我在列表中看不到我的 DLL。 仅来自 GAC 等的 Windows DLL 和程序集。
我错过了什么吗?
【问题讨论】:
您是否以管理员身份运行?您需要管理员权限才能附加到 IIS 进程。 @Rup: 是的,我在管理员模式下运行 VS2008。 知道了。我必须在调试时打开一个以特定文件结尾的页面。一旦我打开正确的页面,我的 ddl 就会加载并激活断点。好吧,我真的对 ASP 编程一无所知...无论如何感谢您的快速回答。 【参考方案1】:Visual Studio -> 调试 -> 附加到进程
w3wp.exe
更多信息在这里:http://www.codeproject.com/KB/aspnet/ProcessAttache.aspx
【讨论】:
没有 w3wp.exe。我不想调试托管在 iis 上的应用程序。 Visual Studio 项目配置为启动 VS Dev Server 来托管应用程序。 等等,你说的是Visual Studio 2008和IIS7,如果有站点托管在IIS中,就会有w3wp.exe。对不起,如果我误解了你【参考方案2】:对于存档:只有在进程空间中加载了相应的程序集后,才会激活断点。因此,为了启用在 DLL 内的代码行上设置的断点,您必须将应用程序运行到加载 DLL 的位置。断点将被调试器识别并在 VS 中不显示。
【讨论】:
【参考方案3】:对我来说问题原来是在调试配置中打开了属性->构建->优化代码复选框。将其关闭,重新构建,调试正常。
【讨论】:
【参考方案4】:您是否在<system.web>
部分而不是<system.webServer>
中注册了HttpHandler?
在web.config
:
<system.web>
...
<httpHandlers>
<add verb="GET" path="MyHandler.ashx" type="MyHandler, MyAssembly" />
...
</httpHandlers>
</system.web>
另见
UltiDev Cassini and web.config settings HttpHandler in IIS7 and Visual Studio 2010【讨论】:
【参考方案5】:解决了。
我不得不在调试时打开一个以特定文件结尾的页面。一旦我打开正确的页面,我的 DDL 就会加载并激活断点。
【讨论】:
以上是关于ASP.NET 应用程序调试:断点当前未命中的主要内容,如果未能解决你的问题,请参考以下文章
解决VS2013调试ASP.NET中无法调试的问题:当前不会命中断点。在 XXXX.dll 中找到了 XXX.cs 的副本,但是当前源代码与 XXXX.dll 中内置的版本不同。
VS2017调试代码显示“当前无法命中断点,还没有为该文档加载任何符号”