2017-03-08 3 views
0

Ich wurde beauftragt, einen Weg zu finden, einen Anwendungspool von einer Webseite neu zu starten. Der IIS wird von unserer eigenen IT-Abteilung gehostet, daher werden bei Bedarf erforderliche Sicherheitseinstellungen geändert.Wie man Microsoft.Web.Administration richtig benutzt, um einen Anwendungspool von einer Webseite zu starten?

ich Microsoft.Web.Administration.dll bin mit und versuchen, dies für meine lokale IIS (7.5):

  ServerManager serverManager = new ServerManager(); 
      ApplicationPoolCollection applicationPoolCollection = serverManager.ApplicationPools; 
      foreach (ApplicationPool applicationPool in applicationPoolCollection) 
      { 
       appPoolNames.Add(applicationPool.Name); 
       // If the applicationPool is stopped, restart it. 
       if (applicationPool.State == ObjectState.Stopped) 
       { 
        applicationPool.Start(); 
       } 
      } 

      // CommitChanges to persist the changes to the ApplicationHost.config. 
      serverManager.CommitChanges(); 

Wenn ich diese Logik in einem winform setzen und als lokale admin, meine app-Pool laufen in lokaler IIS wird gestartet. Wenn ich jedoch die gleiche Logik in einer Webseite setzen, schlägt es mit dem Fehler in dieser Zeile mit dem Fehler:

if (applicationPool.State == ObjectState.Stopped) 
Exception: System.ComponentModel.Win32Exception: Access is denied 

Ich denke, das für die Sicherheit zurückzuführen ist, aber ich bereits einem lokalen Admin-Benutzer auf meinen app-Pool geben. Gibt es einen Weg, dies auf einer Webseite zu erreichen?

Antwort

0

Ich nehme an, die Webseite befindet sich nicht im selben Anwendungspool wie der, den Sie neu starten möchten, was keine gute Idee wäre (weil die Webseite plötzlich ihren Prozesshost verlieren würde). Unter der Annahme, dass es sich um einen anderen Anwendungspool handelt, kommt es auf die Identität des Anwendungspools der Webseite an - dies erfordert Berechtigungen zum Neustarten des Zielanwendungspools.

Verwandte Themen