I'm running an ASP.NET application (.NET Framework 4.6) on a Windows Server with IIS 10.
I've read a few examples where you get the application pool for specific sites.
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);
}
But in these examples I have to define the Website (as far as I understand) under which the application is running.
Now when I don't want to fixate that in the source code (as it can change), I'm wondering how can I get under which application pool name is the application running?
Get the current site name and path via the HostingEnvironment.SiteName
and HostingEnvironment.ApplicationVirtualPath
respectively.
With them, getting the desired information from the server manager can be done like
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];