【发布时间】:2015-02-26 03:25:22
【问题描述】:
我正在使用 Visual Studio 2013 中的 ASP.NET 解决方案,该解决方案未能命中断点。 Visual Studio 将成功地在其他解决方案上打断点,并且此解决方案中的断点以前有效。但此时它们无法正常工作。
我使用的是 Visual Studio 2013 Ultimate,Update 4。它安装在 64 位 Windows 8.1 上。
这是一个包含 3 个项目的 MVC 解决方案:BusinessEntities、DataAccessLayer (DAL) 和一个 Web 项目。所有这些项目中的断点都不起作用。我什至在 Home 控制器的 Index ActionResult 中尝试了一个断点,但仍然无法在断点处停止。
在 Visual Studio 功能区中,解决方案配置设置为调试。此外,配置管理器显示我的所有 3 个项目都将配置设置为调试。重新启动 IIS、重新启动 Visual Studio 和重新启动都不能解决此问题。选择 Build > Clean Solution、Build > Rebuild,然后选择 Debug > Start Debugging 也没有修复它。
在 web.config 中,此节点中的 debug 设置为 true:
<system.web>
<compilation debug="true" targetFramework="4.0" />
我的项目的 bin 目录中有 .pdb 文件。我验证了在清理解决方案时它们会被删除,并在重建时重新创建。
我还需要检查什么?我真的需要让断点在这个解决方案中工作。谢谢。
========
2014 年 12 月 30 日更新 - 以下是我在 @paul.abbott.wa.us 的 cmets 之后尝试的几件事。为了清楚起见,我删除了我制作的几个 cmets 并在此处附加。
========
我通过 VS 启动应用程序,并在 IIS 下运行它。 IIS 的版本是 8.5。公开进程名称时(通过 System.Diagnostics.Process.GetCurrentProcess().ProcessName),它是 w3wp。
在 IIS 中,Web 应用程序有一个类似“local.mysite”的站点名称,并且在我的主机文件中有一个匹配的条目。该站点使用 DefaultAppPool,它采用 .NET CLR 4.0 版和集成托管管道模式。我的解决方案中的 3 个应用程序针对 .NET Framework 4。
如果我将它切换回 IIS Express,调试器就会开始工作。 IIS版本改为8.0,进程名当然是iisexpress。从技术上讲,我不必在我的工作站上的 IIS 下运行它,但我更愿意这样做。我在 IIS 中配置错误或忽略了哪些可能导致调试器失败的原因?
查看属性页的 Web 选项卡上的项目服务器设置,我注意到下拉菜单设置为“IIS Express”。将其切换到“本地 IIS”后,系统提示我以管理员身份运行 VS。之后,我能够将服务器更改为本地 IIS,并点击调试器。我签入了更改,关闭了 VS,启动了 VS 未以管理员身份运行,并加载了解决方案。 Web 项目加载失败并显示以下消息:Web 应用程序项目 [MySiteName] 配置为使用 IIS。无法访问 IIS 元数据库。您没有足够的权限访问您机器上的 IIS 网站。
最终,本网站的某些部分将采用 Active Directory 身份验证。那么,如果我希望在 IIS 下运行站点,我需要在 IIS Express 下运行站点还是始终以管理员身份运行 VS 的解决方案是什么?谢谢。
我找到了解决“Web 应用程序项目 [MyApp] 配置为使用 IIS。无法访问 IIS 元数据库。您没有足够的权限访问您机器上的 IIS 网站。”按照此帖子中的步骤操作。 Error - Unable to access the IIS metabase
授予我的帐户对 intetsrv\config 文件夹的访问权限后,Web 项目在 Visual Studio 中正确加载,无需以管理员身份运行 VS。
但是现在当我启动该站点时,会出现另一个警告:“无法在 Web 服务器上开始调试。 IIS 不会列出与启动的 URL 匹配的网站。单击帮助以获取更多信息。”最初我只是单击“创建虚拟目录”并再次启动,但同样的警报再次出现。
所以我从警报中选择了帮助按钮。这导致了this MSDN page,它提出了大约 2 打东西要检查,与其他文章的链接大约是一半。我现在感觉有点像爱丽丝梦游仙境,朝着兔子洞走得更远。
2/3/2015 更新:我在本地 IIS 实例上运行此程序时的解决方法是以管理员身份运行 Visual Studio。最终,我们将应用程序更改为使用 IIS Express,然后放弃该应用程序,转而使用同事构建的另一个解决方案。这个决定与这个问题无关。感谢大家的反馈和想法。
2016 年 3 月 7 日更新:目前我无法复制此问题,因为我们不再拥有去年我处理该问题时的状态的解决方案。如果版主能结束这个问题,我将不胜感激。关闭此选项的选项与我当前的情况不符,但如果遇到这种情况,也许其他人会发现下面的建议很有用。感谢所有提出建议的人。
【问题讨论】:
-
您是通过 VS 启动应用程序还是手动将调试器连接到 w3wp.exe?您使用的是 IIS 还是 Express?
-
谢谢保罗。我按照您的建议尝试了几件事,并将它们附加到原始帖子中。见上文。
-
断点是否显示为红色圆圈(未填充)
-
黑暗中的一枪 - 关闭“只是我的代码”调试器选项。您也可以查看lowleveldesign.wordpress.com - 这是我认为对 .NET 调试有深入了解的人的博客。
标签: asp.net-mvc debugging visual-studio-2013