2012-07-02 50 views
1

我正在尋找停止/啓動IIS網站的c#.Net應用程序(web或桌面)。試圖在c中打開/關閉iis網站#

我在網上搜索這個,我找不到一個有效的例子或解釋。

我發現這個DLL http://msdn.microsoft.com/en-us/library/microsoft.web.administration.servermanager%28v=VS.90%29.aspx

這是我在做,試圖阻止一個例子/啓動IIS網站:

「使用Microsoft.Web.Administration」 參考..

var server = new ServerManager(); 
var site = server.Sites.FirstOrDefault(s => s.Name == "SITENAME"); 
if (site != null) 
     { 
      //stop the site... 
      site.Stop(); 
      if (site.State == ObjectState.Stopped) 
      { 
       //do deployment tasks... 
      } 
      else 
      { 
       throw new InvalidOperationException("Could not stop website!"); 
      } 
      //restart the site... 
      site.Start(); 
     } 
     else 
     { 
      throw new InvalidOperationException("Could not find website!"); 
     } 

site.Stop拋出一個異常:

"Access denied. (Excepción de HRESULT: 0x80070005 (E_ACCESSDENIED))" 

除ionType「UnauthorizedAccessException」

我該怎麼做?什麼即時做錯了?

+0

的錯誤似乎很明顯,你的應用程序在其下運行的安全上下文沒有權限。如果您的程序本身在IIS下運行,請確保它使用的應用程序池具有特權用戶帳戶。 – kingdango

+0

我該怎麼做? – Fausto

+0

您可以使用「以管理員身份運行」或以編程方式執行權限提升過程來運行應用程序。這對我來說似乎是一個很好的起點:http://msdn.microsoft.com/en-us/library/bb756996。 – hege

回答

1

您將需要以管理員身份運行該程序。

+1

@ kingdango的評論比這個答案更好。 –

+0

我是管理員.. – Fausto

1

擴展我的評論: 錯誤似乎非常明顯,您的應用程序正在運行的安全上下文沒有權限。如果您的程序本身在IIS下運行,請確保它使用的應用程序池具有特權用戶帳戶。

在IIS中,您的網站在應用程序池下運行。確保應用程序池正在使用具有足夠權限的標識。正確的原因,默認的ApplicationPoolIdentity帳戶沒有提升權限。

出於測試目的,您可以使用您自己的登錄名,因爲您表示它具有管理權限。

enter image description here

+0

唯一可行的方法是以管理員身份啓動Visual Studio。 – Fausto

+0

好的,所以你使用的是Visual Studio Web服務器(又名「卡西尼」)。我相信這確實運行在登錄用戶的上下文中,所以這意味着如果您以管理員身份運行Visual Studio,那麼它就可以工作。當您部署到IIS時,請使用我在此答案中提供的說明。 (另外,如果你的問題已經解決,而且這個答案很有幫助,請將它標記爲你的問題的答案)謝謝,祝你好運! – kingdango