C# Visual Studio 2010不允许我调试代码

C# Visual Studio 2010不允许我调试代码,c#,debugging,iis,visual-studio-2010,module,C#,Debugging,Iis,Visual Studio 2010,Module,所以,在过去的几个小时里,这个有趣的问题一直困扰着我。Visual Studio 2010 Ultimate不再附加调试器,并允许我调试代码 如果我使用内置的开发服务器,那么一切都可以正常工作。如果我切换到使用本地IIS Web服务器(),那么它所做的一切都会附加到w3wp.exe,但不会加载任何DLL或PDB。我可以进入Debug>Windows>Modules,实际上这个窗口中没有加载任何东西。相反,当使用内置开发服务器时,“模块”窗口将显示所有DLL,并显示我的DLL的符号已加载。显然有点

所以,在过去的几个小时里,这个有趣的问题一直困扰着我。Visual Studio 2010 Ultimate不再附加调试器,并允许我调试代码

如果我使用内置的开发服务器,那么一切都可以正常工作。如果我切换到使用本地IIS Web服务器(),那么它所做的一切都会附加到w3wp.exe,但不会加载任何DLL或PDB。我可以进入Debug>Windows>Modules,实际上这个窗口中没有加载任何东西。相反,当使用内置开发服务器时,“模块”窗口将显示所有DLL,并显示我的DLL的符号已加载。显然有点不对劲。VS安装完全是骨瘦如柴的

在IIS中,我的网站配置为ASP.NET 2.0(因为不存在可从下拉列表中选择的3.5),以及在“主目录”选项卡上选中的读取/日志访问/索引此资源选项

我的一些失败的想法:
1) 如果我附加到显示网站的iexplore.exe实例上的进程,它将加载Internet Explorer的DLL,但不会加载我的DLL。
2) 我已多次重新启动计算机
3) 我已经调用了devenv.exe/resetuserdata一次
4) 我已经确认每个项目确实都设置为调试而不是发布。
5) 删除所有\bin内容并重新生成解决方案。
6) 已删除整个解决方案并从源代码管理中重新发布


有人能告诉我这东西怎么了吗?我会因为头痛而得动脉瘤,这是我的原因

您是否尝试删除浏览器缓存?有时浏览器会挂起与当前版本不兼容的旧代码,从而阻止调试。

我以前遇到过一个问题,在“版本配置”屏幕下,某些项目会取消特定解决方案配置的检查,导致它们无法生成,因此无法调试。您能否确认您所做的代码更改是否正在实际生成和执行


另外,您正在运行什么版本的Windows和IIS?您的进程是否可能在应用程序池下运行,其帐户与您登录时使用的帐户不同,可能是权限问题?如果是Vista/Win7,UAC是否已打开,您是否以管理员身份运行VS?我也会支持这个建议,尝试一个新的项目,看看会有什么效果。您是否在计算机上的调试器用户本地组中?

是否在未连接调试器的情况下运行应用程序?闻起来好像您将调试器附加到错误的进程

您需要将调试器附加到IIS工作进程,您使用的是哪个操作系统?确保在附加到进程中使用托管+本机标志进行附加。如果您只是在VisualStudio中运行(F5)web应用程序(自动附加调试器),会发生什么情况?您是否有任何错误?

这里有很多很好的答案,但我发现问题的根本原因是应用程序池身份验证配置。让我来描述一下我经历过的情景和解决方案,也许它会帮助某人节省时间……和头发

场景:
我想在Visual Studio 2010中调试ASP.NET web应用程序,但无法使用内置的Visual Studio web服务器。我无法使用内置web服务器的原因是,我的应用程序引用了专门为64位体系结构构建的程序集,而VS web服务器不支持这些程序集。因此,我必须在网站属性中使用“使用自定义Web服务器”选项,以将调试器指向远程IIS Web服务器上我的网站的已发布实例

问题:
即使将web.config调试选项正确设置为在程序集输出中发布调试符号(即compilation debug=“true”),调试器也不会附加到远程IIS进程,而且我也没有遇到任何断点

环境:
Visual Studio 2010调试器已安装在远程IIS web服务器上,并作为Windows服务在LocalSystem帐户下运行

解决方案
在IIS web服务器上托管的网站上启用“匿名身份验证”和“Windows身份验证”

一旦我启用了匿名身份验证,VS远程调试器就加载了正确的符号,并且我能够命中断点


希望这对你们有所帮助。

所有项目目前都设置为内置Configuration Manager。7) 此外,我还取消了引用,然后重新添加了对依赖项目的引用。我清除了IE的缓存以及Chrome。当我使用本地IIS Web服务器时,两个浏览器都不工作。当我将其设置为内置服务器时,这两种功能都可以工作。它确实可以完全运行应用程序。但我不知道它可能连接到哪个进程——如果它连接到其他进程,为什么该进程的DLL都不显示在模块窗口中?看起来您正在连接某个进程。我做了一个小修改,但没有反映出来。调试器正在尝试附加到w3wp.exe,如下所示:是否设置了任何断点?如果在连接VisualStudio时是,如果转到断点,它会显示什么?如果断点无法命中,通常会有一条消息,您知道,为了确保一切正常,我建议从一个全新的/新鲜的(以及VisualStudio创建的)web应用程序开始。一旦您确保IIS可以正常工作(调试),我们就可以继续排除其他可能性。您可能没有正确地附加到进程,如果代码由CLR 4.0加载,则会发生这种情况,但附加了CLR 2.0标志,最终导致调试器具有不同的期望。好的,第2天@离子-是的,它说断点不会被命中,因为没有加载任何符号。“模块”窗口显示未加载DLL或PDB。测试项目将生成并运行