2017-03-08 22 views
0

我的任務是找到一種方法從網頁重新啓動應用程序池。 IIS由我們自己的IT部門託管,因此,如有必要,所有需要的安全設置都將被更改。如何正確使用Microsoft.Web.Administration從網頁啓動應用程序池?

我使用Microsoft.Web.Administration.dll,並試圖爲我的本地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(); 

如果我把這個邏輯在一個WinForm和運行的本地管理員,我的應用程序池本地IIS將​​啓動。但是,如果我把同樣的邏輯在網頁時,出現錯誤,在錯誤這一行:

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

我認爲這是出於安全的,但我已經給本地管理員用戶到我的應用程序池。有沒有辦法在網頁上實現這一點?

回答

0

我假定網頁與您嘗試重新啓動的網頁不在同一個應用程序池中,這不是一個好主意(因爲網頁會突然丟失其進程主機)。因此,假設它是一個不同的應用程序池,那麼它就是網頁應用程序池的標識,這是重要的 - 這將需要有權重新啓動目標應用程序池。

相關問題