【问题标题】:IIS Application Pool ID for storage用于存储的 IIS 应用程序池 ID
【发布时间】:2018-01-16 17:49:22
【问题描述】:

我正在尝试将应用程序池 CPU 使用量大小保持在 db 中。有很多应用程序池,我不知道哪个应用程序池的大小。我必须这样做:

应用程序池 id - db 中的 cpu 使用大小

但我不知道如何获取应用程序池标识。我是这样做的;

 var appPoolPath = @"IIS://" + Environment.MachineName + "/W3SVC/AppPools";
                using (var w3svc = new DirectoryEntry(appPoolPath))
                {
                    foreach (DirectoryEntry item in w3svc.Children)
                    {
                        // i can get name like item.Name
                        //but
                        // i need current app pool id in loop
                    }
                }

但我发现每个应用程序池都有相同的 Guid。是不是一定要不同?

【问题讨论】:

  • 请学习Microsoft.Web.Administration API。你使用的东西已经过时了。
  • 我知道这一点,但我正在处理它,我看不到任何 appPool 的标识。再次感谢您的帮助 :) @LexLi

标签: c# iis


【解决方案1】:

安装nuget包Microsoft.Web.Administration并像这样迭代:

var applicationPools = new ServerManager().ApplicationPools;

foreach (var applicationPool in applicationPools )
{
     Console.WriteLine(applicationPool.Name);
     var cpuInfo = applicationPool.Cpu;
     // extract cpu usage
    // get app pool attributes for current app pool
    var attrValue = applicationPool.GetAttributeValue("<attributeNameHere>");
}

您可以尝试使用GetAttributeValue() 方法,我不确定您需要使用什么属性名称,但可能类似于:ApplicationPoolIdentity

另外请通过此链接,它可能有用Application Pool Identities

【讨论】:

  • ApplicationPool.Cpu property“获取当前应用程序池的 CPU 使用参数。”
  • 谢谢@ankit_sharma .. 这不是我需要的。我必须将应用程序池 ID 保留在数据库中以获取 cpu 使用率,但我不知道应用程序池的 ID。我不想将应用程序池的名称保留在数据库中,因为它没有用。我只需要应用程序池的 ID。 .我希望我能解释一下..
  • 我对在 IIS 应用程序池上进行识别感到非常困惑,因为我没有包含 IIS 的服务器计算机。无论如何,谢谢 :) @ankit_sharma
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-14
  • 2010-10-19
  • 2013-03-07
  • 2016-02-05
相关资源
最近更新 更多