다음 방법이 주어지면 IIS 7 응용 프로그램 풀을 시작/중지하려고합니다. 서비스를 중지 할 때 나는 성공적으로 내 로컬 시스템에서이 작업을 수행 할 수 있지만, 나는 우리의 윈도우 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) 설명 : 현재 웹 요청 실행 중에 처리되지 않은 예외가 발생했습니다. 오류 및 코드가 에서 발생한 지점에 대한 자세한 내용은 스택 추적을 검토하십시오.
예외 정보 : System.UnauthorizedAccessException : 액세스가 거부되었습니다. (HRESULT 예외 : 0x80070005 (E_ACCESSDENIED))
ASP.NET에서 요청한 리소스에 액세스 할 수있는 권한이 없습니다. ASP.NET 요청에 대한 리소스에 대한 액세스 권한을 부여하는 을 고려하십시오. ASP.NET은 응용 프로그램이 가장하지 않는 경우 사용되는 기본 프로세스 ID (IIS5의 경우 {MACHINE} \ ASPNET 또는 IIS 6 및 IIS 7의 경우 네트워크 서비스이고 IIS7의 경우 구성된 응용 프로그램 풀 ID는 ) . 응용 프로그램이 으로 위장하면 익명 사용자 (일반적으로 IUSR_MACHINENAME) 또는 인증 된 요청 사용자가됩니다.
나는 이것이 사용 권한 문제라는 것을 알고 있지만 액세스 권한을 부여 할 대상과 사용자에 대해 확신하지 못합니다.
참고 : 이미 IIS 6 메타베이스 및 WMI 호환성
는 필요한 권한은 응용 프로그램 풀 ID 사용자에게 부여해야합니다.응용 프로그램이 실행중인 응용 프로그램 풀 ID를 확인하고 해당 사용자에 대한 액세스 권한을 부여하십시오. – Tariqulazam