是否可以获取正在运行应用程序的应用程序池(无需事先了解网站)?

时间:2018-10-17 08:29:07

标签: asp.net visual-studio-2017 iis-10

我正在具有IIS 10的Windows Server上运行ASP.NET应用程序(.NET Framework 4.6)。

我已经阅读了一些示例,其中提供了特定站点的应用程序池。

ServerManager manager = new ServerManager();
Site defaultSite = manager.Sites["Default Web Site"];

foreach (Application app in defaultSite.Applications)
{
    Console.WriteLine(
        "{0} is assigned to the '{1}' application pool.", 
        app.Path, app.ApplicationPoolName);
}

但是在这些示例中,我必须定义运行该应用程序的网站(据我了解)。

现在,当我不想在源代码中固定它(因为它可以更改)时,我想知道如何在应用程序池名称下运行该应用程序?

1 个答案:

答案 0 :(得分:2)

分别通过HostingEnvironment.SiteNameHostingEnvironment.ApplicationVirtualPath获取当前站点名称和路径。

有了它们,就可以像从服务器管理器中获取所需信息一样

using Microsoft.Web.Administration;
using System.Web.Hosting;

//...

var manager = new ServerManager();

var siteName = HostingEnvironment.SiteName;

var site = manager.Sites[siteName];

var applicationPath = HostingEnvironment.ApplicationVirtualPath;

var application = site.Applications[applicationPath];

Console.WriteLine(
    "{0} is assigned to the '{1}' application pool.", 
    application.Path, application.ApplicationPoolName);

var appPoolName = application.ApplicationPoolName;

var applicationPool = manager.ApplicationPools[appPoolName];