2012-12-18 2 views
0

인 principalcontext asp.net를 만들기 위해 사용자의 도메인을 얻는 방법 : 당신이 '돈 어디 코드 조각을보고 다시 동안PrincipalContext을 만들 닷넷 4.0 코드의 줄을 사용하여

PrincipalContext context = new PrincipalContext(ContextType.Domain, "domain"); 

도메인 이름을 지정해야하지만 대신 시스템 또는 httpcontext 변수를 사용하여 도메인 이름을 전달해야합니다. 그것은 user.logondomain과 비슷하지만 더 이상 찾을 수 없습니다. user.identity.name에서 도메인을 스트립하지 않았습니다.

이것은 ASP.NET 웹 응용 프로그램에서 Windows 인증을 사용하고 있습니다.

답변

1

이 작동합니다 :

string domain = "defaultDomain"; 
string[] splittedAuth = Request.ServerVariables["LOGON_USER"].Split('\\'); 
domain = (splittedAuth.Count() > 1) ? splittedAuth[0] : domain; 
PrincipalContext context = new PrincipalContext(ContextType.Domain, domain); 

당신이 Environment.UserDomainName Property를 참조한다면, 이것은 하지는 코드가 실행되는 계정의 도메인을 반환 당신이 필요 확실히이다 ASP.NET 시나리오가 아닙니다.

+0

아니요. 나는 그 방법을 알고있다. 내가 찾고있는 것은 이미 존재하는 변수이다. – murisonc

+0

그게 내가 찾고 있었던 바로 그 것이다. 그리고 그것은 내 dev에 상자에 적절한 이름을 반환하지만 dev에 있기 때문에 그것이 추측하고있어? IIS Express를 사용하여 Windows 인증을 실행하는 VS2010 웹 응용 프로그램? – murisonc

+0

코드를 실행하는 사람이므로 도메인 이름을 반환합니다. 응용 프로그램이 프로덕션 환경에서 실행될 경우 현재 요청을 작성한 사용자의 도메인이 아니라 코드가 실행되는 계정의 도메인이 표시됩니다. –