如何以编程方式列出 IIS 工作进程?
How can I list IIS working processes programmatically?
我已尝试按照建议 here 使用 WorkerProcess class,但收到 "System.Management.ManagementException: Invalid class" 错误消息。
var scope = new ManagementScope("//./root/CIMV2");
var searcher = new ManagementObjectSearcher(scope, new ObjectQuery("SELECT * FROM WorkerProcess"));
还有其他想法吗?
如果这适用于 IIS 7+,那么您可以轻松地使用 ServerManager,您可以在此处找到一些示例:http://blogs.msdn.com/b/carlosag/archive/2006/04/17/microsoftwebadministration.aspx
对于 WorkerProcesses,你可以这样做:
using(ServerManager iisManager = new ServerManager()) {
foreach(WorkerProcess w3wp in iisManager.WorkerProcesses) {
Console.WriteLine("W3WP ({0})", w3wp.ProcessId);
foreach (Request request in w3wp.GetRequests(0)) {
Console.WriteLine("{0} - {1},{2},{3}",
request.Url,
request.ClientIPAddr,
request.TimeElapsed,
request.TimeInState);
}
}
}
我已尝试按照建议 here 使用 WorkerProcess class,但收到 "System.Management.ManagementException: Invalid class" 错误消息。
var scope = new ManagementScope("//./root/CIMV2");
var searcher = new ManagementObjectSearcher(scope, new ObjectQuery("SELECT * FROM WorkerProcess"));
还有其他想法吗?
如果这适用于 IIS 7+,那么您可以轻松地使用 ServerManager,您可以在此处找到一些示例:http://blogs.msdn.com/b/carlosag/archive/2006/04/17/microsoftwebadministration.aspx
对于 WorkerProcesses,你可以这样做:
using(ServerManager iisManager = new ServerManager()) {
foreach(WorkerProcess w3wp in iisManager.WorkerProcesses) {
Console.WriteLine("W3WP ({0})", w3wp.ProcessId);
foreach (Request request in w3wp.GetRequests(0)) {
Console.WriteLine("{0} - {1},{2},{3}",
request.Url,
request.ClientIPAddr,
request.TimeElapsed,
request.TimeInState);
}
}
}