确定哪个 w3wp.exe 进程属于 Windows 7 / IIS7.5 中的哪个 App Pool?

Posted

技术标签:

【中文标题】确定哪个 w3wp.exe 进程属于 Windows 7 / IIS7.5 中的哪个 App Pool?【英文标题】:Determine which w3wp.exe process belongs to which App Pool in Windows 7 / IIS7.5? 【发布时间】:2010-12-20 02:51:42 【问题描述】:

我最近将我的开发机器从 Windows XP 升级到了 Windows 7。在运行 Windows 7 的桌面上,我如何知道哪个 w3wp.exe 进程属于哪个应用程序池?

On a server running IIS6, you can run c:\windows\system32\cscript iisapp.vbs

On a Windows 2008 Server running IIS7 you can run appcmd list wp

但是在我的桌面上呢?

【问题讨论】:

Find Process Id of an IIS Site by Site Name 【参考方案1】:

如果您打开 IIS 管理器,请转到左侧树中代表您的计算机的根节点(应标记为您的计算机名称)。

在右侧的功能视图中,您会看到一个名为 IIS 的部分。在它下面你会看到Worker Processes。选择它,它应该会显示所有正在运行的工作进程和一些基本信息,包括 ProcessId。

您可以在任务管理器的“进程”选项卡中将该 ProcessId 与匹配的进程相关联(显示来自所有用户的进程,并在结果中包括 ProcessId 列)。

【讨论】:

厉害,不用轮盘调试。 太棒了,太棒了,为我节省了几个小时【参考方案2】:

您也可以进入任务管理器并添加 PID命令行 列以查看您需要的信息。

涂黑的内容包含各个进程的名称。

我发现这个工作流程比必须导航离开我在 IIS 中查看的内容只是为了查看这些信息稍微简单一些(然后必须导航回我所在的位置) .

【讨论】:

我喜欢这个。使用键盘快捷键(Ctrl-Shift-Escape,“w3”),这比启动 IIS 管理器并在此处和此处使用几次鼠标单击使其为您提供信息要快得多。它会自动刷新。【参考方案3】:

我知道这是一篇旧文章,但这里有一种使用 C# 代码枚举应用程序池和进程 ID 的方法。

void Main()

    using (var serverManager = new ServerManager())
    
        foreach (var appPool in serverManager.ApplicationPools)
        
            string.Format("App pool name = 0", appPool.Name).Dump();

            foreach (var workerProcess in appPool.WorkerProcesses)
            
                string.Format("Process id = 0", workerProcess.ProcessId).Dump();
            
        

        "Done".Dump();
    

确保在 %WINDIR%\System32\inetsrv 中引用 Microsoft.Web.Administration.dll

如果您没有LINQPad,请将转储替换为Console.WriteLine(s)

【讨论】:

【参考方案4】:

使用“以管理员身份运行”打开命令提示符。

导航到路径:

C:\Windows\System32\inetsrv\

对于 IIS 6 运行命令,

iisapp.vbs

对于 IIS 7 运行命令,

appcmd list wp

【讨论】:

以上是关于确定哪个 w3wp.exe 进程属于 Windows 7 / IIS7.5 中的哪个 App Pool?的主要内容,如果未能解决你的问题,请参考以下文章

在调试模式下启动工作进程(w3wp.exe)是啥意思?

什么是 w3wp.exe?

应用程序池及w3wp.exe的藕断丝连

在vs 调试进程中找不到 w3wp.exe 进程

VS2017调试器无法附加到IIS进程(w3wp.exe)

W3wp.exe占用CPU及内存资源