2014-09-04 18 views
7

Desidero riciclare il pool di applicazioni tramite la mia applicazione.Come ottenere il nome del pool di applicazioni tramite il codice (C#, ASP.net)

Precedentemente stavo memorizzando il nome del pool di applicazioni nel mio database e usandolo per riciclare. Ma è successo in passato che abbiamo spostato le app da un pool di app a un altro e talvolta ci siamo dimenticati di aggiornare il nome del pool di app nel database.

Quindi sto pensando di ottenere il nome del pool di applicazioni attraverso l'applicazione e utilizzarlo per il riciclaggio.

+0

qualcosa come questo? http://stackoverflow.com/questions/1400464/enumerating-application-pools-in-iis – fuchs777

risposta

12

Modificato versione di @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; 
    } 
+1

IMHO, risposta migliore di Razon answer – Kiquenet

+0

Combina il collegamento con il codice e questa dovrebbe essere la risposta. – Rexxo

+0

Attenzione: questo codice potrebbe generare un'eccezione COM se l'impostazione "Carica profilo utente" in AppPool su IIS non è impostata su "Vero" –

7

In molti casi potrebbe essere sufficiente leggere solo il nome del pool di applicazioni dalla variabile di ambiente:

var apppool = System.Environment.GetEnvironmentVariable(
        "APP_POOL_ID", EnvironmentVariableTarget.Process); 
Problemi correlati