鑑於以下方法,我試圖啓動/停止IIS 7應用程序池。我可以成功地做到這一點我的本地系統上,但是當我把這個我們的Windows 2008服務器上,我只得到一個錯誤試圖阻止該服務時 - 啓動正常工作:使用C#使用DirectoryEntry啓動/停止IIS應用程序池需要哪些訪問權限?
[NoCache]
public ActionResult EnableAppPool(Models.ActionRequest actionRequest)
{
try
{
if (ModelState.IsValid && actionRequest.ActionRequestPassword == ConfigurationManager.AppSettings["NewsfeedAdminPassword"])
{
bool enableNewsfeed = false;
enableNewsfeed = Convert.ToBoolean(actionRequest.EnableNewsfeedAppPool);
string sPath = "IIS://" + ConfigurationManager.AppSettings["MachineName"] + "/W3SVC/AppPools/" + ConfigurationManager.AppSettings["AppPoolName"];
Console.WriteLine(sPath);
DirectoryEntry w3svc = new DirectoryEntry(sPath);
if (enableNewsfeed)
{
w3svc.Invoke("Start");
}
else
{
w3svc.Invoke("Stop");
}
}
}
catch (Exception ex)
{
throw ex;
}
return null;
}
的錯誤如下:
訪問被拒絕。 (來自HRESULT的異常:0x80070005 (E_ACCESSDENIED))描述: 執行當前Web請求期間發生未處理的異常。請查看堆棧 跟蹤以瞭解有關錯誤的更多信息以及源自 代碼的位置。
異常詳細信息:System.UnauthorizedAccessException:訪問是 被拒絕。 (來自HRESULT的異常:0x80070005(E_ACCESSDENIED))
ASP.NET未被授權訪問請求的資源。考慮 將對資源的訪問權限授予ASP.NET請求 標識。 ASP.NET具有基本的進程標識(通常在IIS 5上爲IIS35或IIS5上的 {MACHINE} \ ASPNET或IIS 7上的網絡服務,以及在IIS 7.5上配置的應用程序池標識, ) 。如果應用程序是 模擬通過,身份將是 匿名用戶(通常IUSR_MACHINENAME)或驗證 請求用戶。
我意識到這是一個權限問題,但我不知道我必須授予訪問權限以及用戶的權限。
FYI:我已經啓用了IIS 6元數據庫和WMI兼容性
除非你是冒充作爲管理員,所需的權限已被授予應用程序池標識用戶。查看您的應用程序在哪個應用程序池標識下運行,併爲該用戶授予訪問權限。 – Tariqulazam 2012-07-13 02:17:29