【问题标题】:Why am I unable to Debug my ASP.NET website in Visual Studio?为什么我无法在 Visual Studio 中调试我的 ASP.NET 网站?
【发布时间】:2023-03-08 14:32:02
【问题描述】:

我以前能够附加到我的 w3wp 进程并调试我的 Web 应用程序,但这不再起作用了。我不知道发生了什么改变来打破这个。我正在使用 Visual Studio 2008 SP1。而且我在 IIS 中进行调试,而不是使用 ASP.NET 自己的服务器(即我不运行我的项目,我只是附加到正在运行的进程(w3wp)。

我的断点只有“断点当前不会被命中。源代码与原始版本不同。”

我尝试过的:

  • 解决方案是否清洁。
  • 做了一个解决方案重建。
  • 确保在我的 web.config 文件中编译 debug=true。
  • 已删除 bin 文件夹
  • 重新启动 Visual Studio
  • 重新启动 IIS
  • 重启我的电脑
  • 添加了一个简单的 Response.Write 以确保正在使用最新的 DLL。是的。
  • 确保在我的项目属性中选中了调试 ASP.NET。是的。
  • 确保我的所有项目都在我的构建配置中编译。他们是。

但这些都没有帮助。我附加到 w3wp,但我的断点从未被命中。

有什么想法吗?

【问题讨论】:

  • 我假设您在 IIS 中进行调试,而不是在 Visual Studio 中使用内置的 asp.net 服务器?另外,请VS版本。
  • 我正在使用 VS2008 SP1,是的,我正在调试 IIS。 (也在问题中澄清)。

标签: asp.net debugging


【解决方案1】:

我最近遇到了这个问题,最后我首先确保系统上根本没有运行 Visual Studio。

然后进入该文件夹并删除其所有内容:

C:\windows\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\

【讨论】:

    【解决方案2】:

    检查您的 web.config

    <compilation debug="true">...
    

    【讨论】:

    • 他说他以前可以,所以他一定已经设置好了:)
    【解决方案3】:

    当您“附加到进程”时,“输出”窗口应该向您显示(当显示“调试”的输出时)它正在加载的所有库,以及从哪里加载它们 - 对于 /bin 文件夹中的 dll,这些通常是复制到\Temporary ASP.NET Files\root\ 文件夹 - 你的从哪里读取?你确定从那里清除它们了吗?

    我唯一能想到的其他事情:

    1. 您已在“发布”模式下编译代码,而不是“解决方案配置”下拉菜单中的“调试”(不是 web.config)。
    2. /bin 文件夹中缺少符号文件 (.pdb)。

    在项目属性的“构建”选项卡上,您在配置“活动(调试)”中,您没有勾选“优化代码”?

    如果您单击该选项卡上的“高级...”,“调试信息”的值是多少?是“满”还是“无”?

    回复评论

    如果您的代码在“发布”模式下编译,您会发现很难成功调试,并且当您在更改后没有重新构建符号(.pdb 文件)时,您经常会收到“源代码不同”的消息- 但你说你已经完成了清理/重建,所以应该覆盖它。

    是的,您的输出窗口将显示您引用的所有框架 dll 以及您的代码 - 但您应该会看到其中列出的一个文件,其中包含每个项目输出的名称 - 这些是要查看的文件。

    您没有一些构建后事件将文件移动到您网站的正确目录中,您是静默失败吗?

    【讨论】:

    • 谢谢,肯定有一些值得考虑的好东西 :) 我已经在发布模式下编译了我的代码。我的符号文件在我的 \bin 文件夹中。 “优化代码”未选中。调试信息为“完整”。剩下的唯一令人困惑的事情是哪些文件应该显示在我的“调试输出”窗口中。那里有很多文件:/
    • 不,没有后期构建事件。我真的很难过:/
    • 在“Debug”模式下编译是否能够成功调试?
    • 好的,只有你原来的评论说“我已经在发布模式下编译了我的代码”。
    • @Zhaph-BenDuguid 对我来说,我没有在 \Temporary ASP.NET Files 位置看到我的 dll。我有什么需要做的吗?
    【解决方案4】:

    我也遇到了这个问题,通过在“附加到进程”对话框中将“附加到”代码类型更改为“自动”来解决它。 (以前由于调试不同的进程,我将其设置为“Silverlight 代码”......很容易忘记将其更改回来。)

    【讨论】:

    • 天哪,我因此而发疯了。谢谢好心的先生!在此之前我正在调试本机代码,如果您不手动执行此属性,则此属性永远不会改变
    • 当您附加托管模块时,您也可能会遇到该问题的变体。然后将自动调试类型设置为native。加载托管模块后,由于调试模式设置为本机,因此将跳过符号加载。您也可以分离并重新连接。现在加载托管模块时,自动调试类型选择将自行更正为混合模式托管。
    【解决方案5】:

    我知道这个问题已经有一段时间了,但我认为它和我遇到的一样:

    我无法调试我的 .aspx 服务器端代码。我有一个工作的 WepApp AnyCPU 项目,我想链接到一些 x86 dll,所以我创建了一个 x86 调试目标。做了类似的事情,重建,停止开发网络服务器,重新启动,清除临时文件,都无济于事。

    通过将目标文件夹更改为 bin\(原为 bin\x86\Debug)解决了问题。

    【讨论】:

    • 这里相同,通过将目标文件夹更改为 bin\ 解决了问题,我正在尝试调试 Web 服务。要查看您的文件是否正确加载,请使用模块窗口(VS 菜单 -> 调试 -> Windows -> 模块),您的项目的优化列需要为“否”。
    【解决方案6】:

    在“附加到进程”对话框中,单击“显示所有用户的进程”复选框(靠近底部),如果您看到两个 w3wp.exe 进程,请尝试另一个。

    一个应该有一个类似 T-SQL 的 cmets/description 值,管理的东西或其他东西。这就是你想要的。

    【讨论】:

    • 好提示。但我只有一个 w3wp(我所有的复选框都被选中)。它的类型是“T-SQL, Managed, x86”。
    【解决方案7】:

    您是否正在运行任何可能会影响此问题的插件?或者任何将构建后操作应用于您开始调试的 DLL 已在构建后修改的源代码的工具,实际上它不是相同的源代码因此调试不起作用是正确的?

    也试过重置VS?

    devenv.exe /resetsettings

    编辑:如果这里没有任何信息可以帮助您,虽然很痛苦,但可能值得卸载并重新安装 VS 和 SP1。如果您经历了这个并且之后的问题是相同的,那么至少可以确保问题出在 web.config 或项目设置中。

    【讨论】:

      【解决方案8】:

      您是否使用此属性检查了您的 assembly.cs 文件

      [assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.Default)]
      

      反映优化的代码后,您可能会得到这个。所以你必须删除它才能再次调试。

      【讨论】:

        【解决方案9】:

        我遇到了同样的问题。 w3wp 进程占用大量内存,不想在 Web 应用程序发布时重置。

        按 Ctrl+Alt+Delete > 转到“进程”选项卡 > 找到 w3wp 进程并 杀死它。再次运行应用程序(如果这是一个 mvc 应用程序,只需转到 自动重新创建 w3wp 进程的相关 url。

        此后警告将消失。

        【讨论】:

          【解决方案10】:

          我在 Visual Studio 2013 Update 4 中尝试了以下所有选项。

          1. 重置 IIS
          2. 清理解决方案并重建
          3. 从临时文件夹中删除文件 C:\Windows\Microsoft.Net\Framework...\临时 ASP.NET 文件
          4. 检查编译标签是否调试

          但是它们都不起作用,这里我列出了对我有用的两件事。

          1. 禁用“仅我的代码”选项 工具 -> 选项 -> 调试 -> 常规 -> 取消选中仅启用我的代码。
          2. 编辑 web.config 文件并保存(您始终可以在任何行中创建一个空格 在 web.config 中,就可以了)

          请注意,此解决方案可能是特定于 Visual Studio 版本的,并且这两个修复都适用于我的 Visual Studio 2013 Update 4。

          【讨论】:

            【解决方案11】:

            我遇到这个问题已经有一段时间了,并在 MS 论坛(下面的链接)上找到了我的解决方案。 调试诊断工具是我的罪魁祸首,但我不必卸载它。我为 w3wp 进程设置了崩溃规则,我只是删除了该规则并重新启动了所有内容。

            Microsoft Forum for Unable to attach error

            【讨论】:

              【解决方案12】:

              在 OpenVMS 上,我们只是习惯:

              编译/调试然后链接/调试

              就是这样!简单!!

              但说真的,请确保您有 Debugger.Break 行的文件在重新构建之前在其属性中设置了“始终复制”

              【讨论】:

                【解决方案13】:

                我使用 Visual Studio 扩展 VSCommands 来附加调试器(方便)。但是,IIS Express 正在运行,我猜它可能会产生干扰。果然,当我closed IIS Express的时候,突然又可以调试了。

                欢乐接踵而至。

                【讨论】:

                  【解决方案14】:

                  在我的情况下,我在 .Net Framework 4.6.1 中有一个控制台应用程序托管网页。当我在条件编译符号中添加了一个Debug,它就开始工作了:

                  【讨论】:

                    【解决方案15】:

                    确保“当前页面”而不是“不要打开页面。等待来自外部应用程序的请求”。在 Properties->Web->Start Action 下选中。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2020-10-22
                      • 1970-01-01
                      • 2014-03-01
                      • 2011-08-28
                      • 2023-03-14
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多