13

I want to recycle the application pool through my application.

Previously I was storing the application pool name in my database and using that to recycle. But It happened in the past that we moved apps from one app pool to another and sometimes we forget to update the app pool name in the database.

So I am thinking to get the app pool name through the application and use that for recycling.

dIvYaNsH sInGh
  • 1,943
  • 3
  • 21
  • 40
  • something like this? http://stackoverflow.com/questions/1400464/enumerating-application-pools-in-iis – fuchs777 Sep 04 '14 at 11:42

3 Answers3

23

In many cases it might be enough to just read the name of the application pool from the environment variable:

var apppool = System.Environment.GetEnvironmentVariable(
                  "APP_POOL_ID", EnvironmentVariableTarget.Process);
Knaģis
  • 20,827
  • 7
  • 66
  • 80
20

Modified version of @Razon answer :)

public static string GetCurrentApplicationPoolName()
{
    ServerManager manager = new ServerManager();
    string DefaultSiteName = System.Web.Hosting.HostingEnvironment.ApplicationHost.GetSiteName();
    Site defaultSite = manager.Sites[DefaultSiteName];
    string appVirtualPath = HttpRuntime.AppDomainAppVirtualPath;

    string appPoolName = string.Empty;
    foreach (Application app in defaultSite.Applications)
    {
        string appPath = app.Path;
        if (appPath == appVirtualPath)
        {
            appPoolName = app.ApplicationPoolName;
        }   
    }
    return appPoolName;
}
Dan Atkinson
  • 11,391
  • 14
  • 81
  • 114
dIvYaNsH sInGh
  • 1,943
  • 3
  • 21
  • 40
5

May this can help: ApplicationPoolName Property

Namespace: Microsoft.Web.Administration Assembly: Microsoft.Web.Administration (in Microsoft.Web.Administration.dll)

http://msdn.microsoft.com/en-us/library/microsoft.web.administration.application.applicationpoolname(v=vs.90).aspx

razon
  • 3,882
  • 2
  • 33
  • 46