2014-09-04 13 views
7

Chcę przetworzyć pulę aplikacji za pośrednictwem mojej aplikacji.Jak uzyskać nazwę puli aplikacji za pomocą kodu (C#, ASP.net)

Poprzednio przechowywałem nazwę puli aplikacji w mojej bazie danych i używano jej do recyklingu. Ale zdarzyło się w przeszłości, że przenosiliśmy aplikacje z jednej puli aplikacji do drugiej i czasami zapominaliśmy o aktualizacji nazwy puli aplikacji w bazie danych.

Zastanawiam się, aby uzyskać nazwę puli aplikacji za pośrednictwem aplikacji i użyć jej do recyklingu.

+0

coś podobnego do tego? http://stackoverflow.com/questions/1400464/enumerating-application-pools-in-iis – fuchs777

Odpowiedz

12

Zmodyfikowany wersja odpowiedzi @Razon :)

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, lepsza odpowiedź niż Razon odpowiedź – Kiquenet

+0

Połączyć link z kod i to powinno być odpowiedzią. – Rexxo

+0

Ostrzeżenie: ten kod może generować wyjątek COM, jeśli ustawienie "Załaduj profil użytkownika" w AppPool na IIS nie jest ustawione na "True" –

7

W wielu przypadkach wystarczy przeczytać nazwa puli aplikacji ze zmiennej środowiskowej:

var apppool = System.Environment.GetEnvironmentVariable(
        "APP_POOL_ID", EnvironmentVariableTarget.Process); 
Powiązane problemy