我不知道为什么,但是某个项目的调试器突然停止工作了。我说突然停止工作是因为有一天它还正常工作,我回家过周末,然后回来,它突然就不工作了。
当我构建解决方案时,本地 Web 服务器启动,站点按预期加载到浏览器中。但是,调试器不再运行 - 如果我想测试断点或逐步执行代码,我必须手动使用开发服务器“附加到进程”。
奇怪的是:我不是我的系统上的任何其他项目都存在这个问题。
我是否可能触发了导致此问题的设置?我该如何修复此问题,以便每次构建时都可以跳过手动“附加到进程”步骤?
答案1
这篇文章或许可以解释原因: 无法调试具有顶级位置的网站
web.config 中的错误可能会导致调试器附加,然后立即出错,没有任何警告或错误。您应该非常仔细地验证 web.config,因为错误可能与文章中的不同。
答案2
我仍然无法确定最初问题的原因,但对于面临此问题的任何人来说,都有一个短期解决方案。
构建项目后(通过选择布利德»构建解决方案或直接点击开始调试),您可以将调试器附加到 ASP.NET 开发服务器的实例。
去调试»附加到进程向下滚动直到看到进程Web 开发工具.Web服务器. 其标签为:ASP.NET 开发服务器 - 端口 XXXX。它通常是列表中的最后一项或接近最后一项。
选择此流程并点击附。然后,您将拥有所有常用的调试工具,并可以在抛出异常或命中断点后逐步执行代码。
这不是一个永久的解决办法! 每次构建或重新构建项目时,您都必须重新执行相同的过程。确实很麻烦,但仍然是一个有用的解决方法。
更新 - 10/5/10
昨天我收到了一封电子邮件,发件人也遇到了同样的问题。我们确定这是web.config
VS 中出现的问题。在这两种情况下,文件的大部分内容web.config
都被包含在一个<location>
块中,并且inheritInChildApplications
属性设置为“false”。
显然,这是 .NET 4 中使用的设置,但在 .NET 3.5 中是非法的...由于 VS 2008 首先无法构建到 .NET 4,所以如何添加这些行是一个谜。
删除<location path="." inheritInChildApplications="false">
和</location>
标签会生成一个工作web.config
文件,一个完整的网站构建,并且附加的调试器。最终,一个完整、永久的解决方案!