2014-07-04 2 views
0

Active Directory에서 전자 메일을 받기 위해 C# 코드를 작성했습니다. 그것은 내 로컬 시스템에서 잘 작동하지만 호스팅 후 나는 이메일 주소를 얻지 못하고있다.호스팅 후 Active Directory 세부 정보가 표시되지 않음

:

  1. 변경된 응용 프로그램 풀 ID
  2. 사용 Windows 및 다이제스트의 Authentications (모두 동시에 너무 하나 하나에서)

코드 NetworkService에 - 다음은 이미 시도한 것들

,464 -
using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "comppany.com" , "DC=compnay,DC=com", ContextOptions.Negotiate)) 
// tried above and below//(ContextType.Domain, System.Net.NetworkInformation.IPGlobalProperties.GetIPGlobalProperties().DomainName)) 
{ 
       // validate the credentials 
       bool isValid = pc.ValidateCredentials(Uid, Pwd); 

       if (isValid) 
       { 
        try 
        { 
         using (UserPrincipal up = UserPrincipal.FindByIdentity(pc, Uid)) 
         { 
          return up != null && !String.IsNullOrEmpty(up.EmailAddress) ? up.EmailAddress : string.Empty; 
         } 
         //return "Validate successfully."; 
        } 
        catch (Exception ex) 
        { 
         return ex.Message; 
        } 
       } 
} 

은 또한 다음과 같은 시도

아무도 IIS7.0에서 응용 프로그램을 호스팅 한 후 작동하지 않습니다

도와주세요. 감사합니다.

+0

원격으로 디버깅을 시도 했습니까? 아니면 로깅? – Tarec

답변

0

사용자 (즉, 귀하)가 Active Directory에서 읽을 수있는 권한을 가지지 만 IIS 사용자 및 네트워크 서비스는 읽을 권한이 없기 때문입니다.

using 문을 사용하여 try catch를 넣으면 예외가 발생합니다.

연결할 사용자의 세부 정보를 지정할 수있는 대체 PrincipalContext 생성자가 있거나 권한이있는 사용자로 실행되도록 IIS 응용 프로그램 풀을 변경할 수 있습니다. PrincipalContext 방법을 사용합니다.

빠른 테스트로서 PrincipalContext 생성자의 버전 this을 시도하십시오 - 사용자 이름과 암호 paramemetrs에 사용자 이름과 암호를 입력하고 IIS에서 호스트 될 때 작동하는지 확인하십시오 - 그러면 작동합니다. 설정을 통해 사용자 세부 정보를 전달합니다. (일반적으로 읽기 권한 만있는 서비스 계정이 암호는 자주 변경되지 않습니다.)

관련 문제