是否可以让应用程序池运行(不事先知道网站)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (63)

我在带有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);
}

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

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

提问于
用户回答回答于

分别通过HostingEnvironment.SiteName和获取当前站点名称和路径HostingEnvironment.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];

扫码关注云+社区

领取腾讯云代金券