我使用 Visual Studio 2010 在我的本地机器上调试一个 asp.net MVC 项目。步骤是:
单击调试并尝试附加进程“w3wp.exe”。但是它不在列表中。
我确定单击“显示所有会话中的进程”。
我使用 Visual Studio 2010 在我的本地机器上调试一个 asp.net MVC 项目。步骤是:
单击调试并尝试附加进程“w3wp.exe”。但是它不在列表中。
我确定单击“显示所有会话中的进程”。
w3wp.exe 不会显示在正在运行的进程中,除非确实有 Web 应用程序的实例正在运行。
首先尝试访问您的网页,当它第一次显示时,尝试附加您的调试器。现在应该显示该过程。
您需要单击任务管理器列表底部的显示所有用户的进程。这是我需要做的。
尝试检查:“显示所有用户的进程”当在左下角的“附加到进程”窗口中有一个复选框“显示所有用户的进程”
一个简单的方法,当 w3wp 没有出现在列表中时,打开浏览器并输入 localhost,然后输入。之后 w3wp 出现在列表中。
仅仅因为启动了 IIS 应用程序池,可能没有 IIS 工作进程
w3wp
在运行。在收到第一个 Web 请求之前,IIS 不会启动工作进程。
就我而言,我首先启动了应用程序,但仍然找不到w3wp.exe
. 然后我从 ( IIS->Worker Process -> Process Id
) 中取出工作进程 ID,然后在详细信息选项卡中按 id 搜索并找到它。
iisreset
通过在命令提示符中编写命令来重置 IISGoTo Web Project properties -> Select (Web) on the left sidebar -> GoTo under (Servers) header -> Click to dropdown and select"Local IIS"
并申请。然后,当您开始调试时,您将在进程列表中看到 w3wp.exe。
如果您使用 Advanced Rest Client 之类的东西来测试路由,请再次调用您的路由,然后刷新进程列表,它将显示
我刚刚遇到了这个问题 - 您可能还想仔细检查您的主机设置并确认您实际上指向的是 localhost 而不是生产服务器。
我忘记了我被指向了一个远程服务器,因此,尽管我正在访问该站点,但它不是本地的任何东西,因此 w3wp 没有运行,尽管我表面上能够看到该站点正在运行。
就我而言,一旦我重建 Web 项目并提高连接超时限制(以秒为单位),它会自动显示在调试/附加到进程列表中并继续工作。
就我而言,我没有在管理员模式下打开 Visual Studio,这就是 w3wp.exe 没有显示在列表中的原因。
当我在管理员模式下打开 Visual Studio 时,它工作了。
右键单击 Visual Studio -> 在管理员模式下打开。
尝试以下步骤:
从解决方案资源管理器创建虚拟路径。
转到 inetmgr 以确认您自己的池已创建。
转到附加进程 (Ctrl+Alt+P) 并显示所有用户的进程。
然后你会看到 w3wp.exe 会在那里。
请注意,即使在跳过所有这些障碍之后(使用 Web 浏览器启动实例,以管理员身份启动远程调试会话,确保选中“显示所有用户”等,确保您不在服务器上农场等),您有时可能仍然不走运。
有时远程进程(在我的情况下通常是 WCF 服务)根本不会显示在要附加到的进程列表中,并且对此无能为力。我总是小心翼翼地让我的目标进程易于识别,方法是将其保存在某个应用程序池中。有时你就是无法从这里到达那里。这无疑是微软做过的远程调试最令人沮丧的事情。
就我而言,问题在于我没有以管理员身份运行 Visual Studio。我的机器在更新后重新启动并重新启动了所有以前运行的进程,但只在非管理员模式下重新启动了 VS。当我以管理员模式重新启动 VS 时,w3wp.exe进程再次可用于调试。
我也想为未来的读者分享我的经验。
请注意,如果您有Web 服务器集群配置(用于负载平衡等),该w3wp
过程可能不会在您期望的同一台机器上启动。
除非您的网站配置为仅在单个 IIS 实例上运行,否则该w3wp
进程可能会在您的 Web 集群内的其他机器之一上运行。
这可能是网络团队/部门的错误配置或预期行为。我没有必要的经验来准确指出它应该如何配置。
在 MSDN 上也找到了相关页面:
以管理员身份运行远程调试器。我按照每个建议来解决问题,但直到我以管理员身份运行远程调试器后,我才能够看到 w3wp 进程
就我而言,我需要从一个 Visual Studio 连接到从另一个 VS Studio 窗口运行的进程。
接下来是问题:以管理员权限启动了一个 VS。要解决该问题,您应该使用管理员权限启动两个 VS。