2012-02-08 2 views
2

이 아닙니다. 이것은 흥미로운 문제입니다. Visual Studio Development Server에서 실행되는 ASP.NET MVC3 인트라넷 응용 프로그램을 NTLM이 없습니다. 테스트중인 컴퓨터에 AD 도메인이 없습니다.MVC3 User.Identity.Name이 null이고 Enironment.UserName이

사용자에게 User.Identity.Name을 보내려고하면 null 참조 예외가 발생하지만 Environment.UserDomainEnvironment.UserName을 사용하면 올바른 값으로 채워집니다.

나는 이것에 대해 심각하게 혼란스러워합니다. User.Identity.Name을 사용하지 않아야합니까, 아니면 이것이 null 인 이유가 있습니까?

UPDATE는

난 그냥 System.Web.HttpContext.Current.User.Identity.Name를 사용할 때 작동 것으로 나타났습니다하지만, 단지 User.Identity.Name이 작동하지 않습니다 사용. 사용하는 문장이 누락 되었습니까?

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
+0

실행중인 코드는 무엇입니까? 전체 컨텍스트가 무엇입니까? (method, thread ...) –

+0

이 코드는 생성자의 Controller 클래스 내부에서 직접 실행됩니다. – Kev

+0

UPDATE에 감사드립니다. 나는 동일한 문제를 가지고 있었고 System.Web.HttpContext.Current.User.Identity.Name이 그것을 해결했다. 감사! –

답변

1

Environment.UserName 그냥 현재 그것이 내가 추측 개발 서버를 실행하는 사용자의 사용자의 경우, 프로그램을 실행하는 사용자를 알려줍니다, asp.net과 함께 아무것도 할 필요가 없습니다.

User.Identity.Name은 완전히 다릅니다 ... 현재 컨텍스트에서 로그인 한 사람의 이름을 알려줍니다. 그리고 그런 식으로 NTLM을 사용할 필요가 없습니다 ... SqlMembershipProvider 또는 사용자 지정 멤버 자격 공급자를 설정하고 폼 인증을 사용하면 AD없이 정상적으로 작동합니다.

+0

그래서이 웹 응용 프로그램을 회사 인트라넷에서 실행하게하고 배포 할 때 Active Directory를 갖게됩니다. AD 도메인에없는 컴퓨터에서 User.Identity.Name을 어떻게 개발할 수 있습니까? – Kev

+0

@Kev 광고없이 Windows 인증을 테스트 할 때 동일한 문제가 있으므로 직접 알고 싶습니다. 내가 아는 한 개발 서버에서 Windows 인증을 사용할 방법이 없습니다 ... IIS가 필요하며 AD가 필요합니다. 꽤 좋은 별도의 스택 오버플로 질문을 만들 것이라고 확신합니다. – m0s