c# - C# 中的应用程序池状态
问题描述
我正在尝试从 Web 应用程序中获取应用程序池状态。我感兴趣的应用程序池是“ABC”,但是当我按名称检查它时,我什么也得不到,当我按名称检查可用池(即 manager.ApplicationPools)时,它们显示为 Clr4ClassicAppPool、Clr4IntegratedAppPool ......所以我从来没有找到一场比赛。
这就是我正在使用的
public static int GetAppPoolStatus(string sAppPoolName)
{
int iRet = -1;
try
{
using (ServerManager manager = new ServerManager())
{
ApplicationPool appPool = manager.ApplicationPools.FirstOrDefault(ap => ap.Name == sAppPoolName);
if (appPool != null)
{
//Get the current state of the app pool
iRet = (int)appPool.State; // 0: Starting, 1: Started, 2: Stopping, 3: Stopped
}
else
{
}
}
}
catch (Exception ex)
{ }
return iRet;
}
解决方案
GAC 版本 (7.9.0.0) 是 IIS Express 的一部分,如果您的项目文件未明确指向%SystemRoot%\system32\inetsrv\Microsoft.Web.Administration.dll
.
最终解决方案(如果不卸载 IIS Express)是显式添加引用以%SystemRoot%\system32\inetsrv\Microsoft.Web.Administration.dll
在编译时使用正确的元数据。它有副作用,但仍然是一种可靠的方法。并且在运行时,使用程序集重定向来坚持版本7.0.0.0
。
更多提示可以在这篇文章中找到
推荐阅读
- dplyr - 使用 dplyr 的组滞后差异
- android - 由于 0dp 高度,ConstraintLayout 中的 Android EditText 是可滚动的
- python - `driver.execute_script("...")` 和 `driver.get("javascript: ..."` 与 geckodriver/Firefox 有什么区别?
- javascript - 如何按波斯字母对列表进行排序?
- javascript - 如何在没有性能问题的情况下访问网站的所有 URL
- css - 使用哪种嵌套结构 (BEM),无需修改 HTML
- typescript - Android 的 IONIC 部署问题
- selenium - 无法通过 Jenkins 作业触发某些应用程序的测试
- ios - CALayer 裁剪
- android - Android CustomDialog minWidth