鉴于以下方法,我试图启动/停止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