所以,这个有趣的问题一直困扰着我过去几个小时。 Visual Studio 2010 Ultimate不再附加调试器并让我调试我的代码。
如果我使用内置的开发服务器,那么一切正常。如果我切换到使用本地IIS Web服务器(http://localhost/),那么所有它都附加到w3wp.exe,但没有加载任何DLL或PDB。我可以去Debug> Windows>模块,在这个窗口中没有任何内容。相反,使用内置开发服务器时,“模块”窗口会显示所有DLL,并显示已加载我的DLL的符号。有些东西显然不对劲。 VS装置完全是骨架。
在IIS中,我的网站配置了ASP.NET 2.0(因为从下拉列表中选择不存在3.5),以及在“主目录”选项卡上选中的读取/日志访问/索引此资源选项。
我的一些失败的想法:
1)如果我附加到显示网站的iexplore.exe实例上的进程,它会加载Internet Explorer的DLL,但不是我的。
2)我多次重启计算机
3)我曾经调用过devenv.exe / resetuserdata
4)我已经确认每个项目都设置为调试而不是释放
5)删除所有\ bin内容并重建解决方案
6)删除整个解决方案并从源代码管理中删除。
有人能告诉我这件事有什么问题吗?这将导致我的头痛,我会产生一种动脉瘤。
答案 0 :(得分:3)
您需要将它附加到IIS工作进程,您正在使用哪个操作系统?确保在Attach to Process中附加Managed + Native标志。如果您只是在Visual Studio中运行(F5)您的Web应用程序(自动附加调试器)会发生什么?你有任何错误吗?
答案 1 :(得分:1)
这里有很多好的答案,但我发现问题的根本原因是应用程序池身份验证配置。让我列出我所经历的场景和解决方案,也许它会帮助别人节省时间......和头发。
<强>情境:强>
我想在Visual Studio 2010中调试ASP.NET Web应用程序,但不能使用内置的Visual Studio Web服务器。我无法使用内置Web服务器的原因是我的应用程序引用了专为64位体系结构构建的程序集,VS Web服务器不支持这些程序集。因此,我必须使用网站属性中的“使用自定义Web服务器”选项将调试器指向远程IIS Web服务器上的已发布的站点实例。
<强>问题:强>
即使正确设置了web.config调试选项以在程序集输出中发布调试符号(即编译debug =“true”),调试器也不会附加到远程IIS进程并且我没有遇到任何断点
<强>环境:强>
Visual Studio 2010调试器已安装在远程IIS Web服务器上,并在LocalSystem帐户下作为Windows服务运行。
<强>解决方案强>:
除IIS Web服务器上托管的网站上的“Windows身份验证”外,还启用“匿名身份验证”。
一旦启用了匿名身份验证,VS远程调试器就会加载正确的符号,并且我能够点击断点。
希望这可以帮助你们。
答案 2 :(得分:0)
您是否尝试删除浏览器缓存?有时浏览器会挂起与当前版本不兼容的旧代码,从而阻止调试。
答案 3 :(得分:0)
我之前遇到过一个问题,在构建配置屏幕下,某些项目未针对特定解决方案配置进行,因此导致它们无法构建,因此无法进行调试。您能否确认是否实际构建和执行了您所做的代码更改?
此外,您运行的是什么版本的Windows和IIS?您的进程是否可能在AppPool下运行,其帐户与您登录的帐户不同,可能是权限问题?如果是Vista / Win7,UAC是否已打开并且您是否以管理员身份运行VS?我还要提出建议,尝试一个新项目,看看它的作用。您是否在机器上的调试器用户本地组中?
答案 4 :(得分:0)
它是否运行应用程序 - 没有附加调试器?它闻起来就像是将调试器附加到错误的进程