从ApplicationHost.config获取IIS workerprocess

从ApplicationHost.config获取IIS workerprocess,iis,application-pool,worker-process,Iis,Application Pool,Worker Process,我需要在不使用appcmd或ServerManager的情况下获取IIS工作进程。 如果使用PerformanceCounter,则只能获取进程Id,而不能获取应用程序池名称。 我已经检查了ServerManager背后的代码,它似乎正在加载applicationHost.Config表单,但我在其中找不到WorkerProcess部分。 我可以从applicationhost获取应用程序池列表,但我还需要processId。 是否有任何windows API可以同时获取应用程序池和进程ID?获

我需要在不使用appcmd或ServerManager的情况下获取IIS工作进程。 如果使用PerformanceCounter,则只能获取进程Id,而不能获取应用程序池名称。 我已经检查了ServerManager背后的代码,它似乎正在加载applicationHost.Config表单,但我在其中找不到WorkerProcess部分。 我可以从applicationhost获取应用程序池列表,但我还需要processId。
是否有任何windows API可以同时获取应用程序池和进程ID?

获取工作进程信息和获取应用程序池配置将取决于不同的内容。正如lex所说,IIS不会将活动工作进程信息存储在applicationhost.config中

如果要阅读某些应用程序池配置,建议使用Microsoft.Web.administration

如果您需要同时获取应用程序池和PID,那么在administrator中使用命令行“APPCMD LIST WPS”将是最简单的方法,即使您不愿意同时使用APPCMD和服务器管理器

如果Appcmd和服务器管理器根本不可接受,则可以使用Process.getProcessByName()获取辅助进程集合。然后通过使用WMI获取用户名来获取他们的应用程序池。因为工作进程的用户名将是IIS Apppool\Apppool name


由于用户可能会更改,应用程序池将更改为本地托管帐户。不建议接受此解决方法。

ApplicationHost.config仅包含静态设置。工作进程是动态的,完全由WAS管理,因此如果不使用appcmd或ServerManager,就无法获取工作进程。实际上,我想从GoLang获取AppPoolName和ProcessId,这是我不使用Microsoft.Web.Administration的原因。使用AppCmd是我的最后一个选择,但我正在寻找本机api来获取这些信息。@alirezam根据我的理解,golang没有官方api。但是你试过这个吗?它似乎达到了你的要求。