2011-09-07 2 views
2

IIS7에서 디렉터리 서비스를 사용할 때 응용 프로그램 풀에서 작동하는 invoke (메서드)를 가져올 수 없습니다. 그것은 알 수없는 이름 예외를 일관되게 반환합니다. 알 수없는 이름입니다. (HRESULT 예외 : 0x80020006 (DISP_E_UNKNOWNNAME))AppPool Invoke는 알 수없는 이름을 반환합니다. 예외 (DISP_E_UNKNOWNNAME)

InvokeGet 명령을 사용하여 응용 프로그램 풀에서 속성 데이터를 가져올 수 있지만 일관되게 실패합니다. 마치 IIS6과 IIS7간에 메서드 이름이 변경된 것과 같습니다. 나는 '

 string machineName = this.MYMACH.Text; 
     string query; 
     string Usrnm = GetUSRNAME(); //decrypts admin user name 
     string Pswd = GetPSWORD(); //decrypts admin user password 
     query = String.Format("IIS://{0}/w3svc/AppPools/{1}", machineName, AppPoolName); 
     DirectoryEntry w3svc = new DirectoryEntry(query, Usrnm, Pswd); 

     try 
     { 
      if (4 == (int)w3svc.InvokeGet("AppPoolState")) // <--- works 
      { 
       w3svc.Invoke("Start", null); 
       errormsgs.Text = string.Format("Application pool {0} retarted", btn.Text); 
      } 
      else 
      { 
       w3svc.Invoke("Recycle", null);  <--- Excepts 
       errormsgs.Text = string.Format("Application pool {0} recycled", btn.Text); 
      } 

     } 
     catch (Exception eee) 
     { 
      errormsgs.Text = string.Format("Application pool {0} recycle error {1}... Query text = {2}", btn.Text, eee.Message, query); 
     } 

:

코드는 IIS6과 윈도우 2003 상자에 웹 페이지의 실행에 의해 운영되고, 그것은 여기 IIS7.5

와 윈도우 2008 상자를 쿼리되어 내 코드입니다 ve는 여러 가지 방법으로 호출을 시도했습니다. w3svc.Invoke ("Recycle", null); w3svc.Invoke ("Recycle", object [] {}); w3svc.Invoke ("Recycle");

아무도 작동하지 않음

아이디어가 있습니까?

답변

2

코드에 로컬 DCOM을 사용하여 호출을 수행 할 권한이 없기 때문입니다. 시도 :

<system.web> 
    <identity impersonate="true" userName="" password="" /> 
</system.web> 

는이 시스템에서 DCOM을 사용할 수있는 권리가 로컬 도메인 계정을 사용해야합니다.

또한 로컬 DCOM 설정을 변경하여 로컬 응용 프로그램 풀 사용자 권한을 부여 할 수 있습니다.

관련 문제