3

내가 null 참조 예외를 throw하는 것이 아니라 인증 된 사용자가 없을 때 User.Identity.Name이 빈 문자열을 반환하는 것으로 나타납니다.User.Identity.Name이 던지지 않습니까?

User.Identity.Name이 절대로 던지지 않을 것이라고 가정하는 것이 유효합니까? 또는 액세스하기 전에 null Identity을 확인해야합니다.

답변

1

난 당신이 시도 캐치에 포장

FormsAuthentication.SetAuthCookie(UserName, False) 

또는

FormsAuthentication.RedirectFromLoginPage(UserName, False) 

그것은 아마 가장 좋은 것입니다 호출하지 않은 경우 사용자 개체가 null이 될 수 있다고 생각합니다.

+0

항상 확인하십시오! 내 응용 프로그램의 대부분은 Windows 인증을 사용하는 인트라넷이므로 응용 프로그램이 올바르게 설정되었으므로 오류가 발생하는 것이 좋습니다. – ggonsalv

0

User.Identity 현재 HttpContextUser이 없으면 null 참조 예외가 발생합니다. null 인 User이지만 Identity이 아닙니다. 그래서 네, 어떤 식 으로든 null을 검사하거나 처리해야합니다.

0

Name이 문자열 인 반면 IdentityUser은 객체이므로 객체가 될 수있는 것처럼 확실히 null 일 수 있습니다. 따라서 항상 예외가 던져 질 수있는 프로덕션 응용 프로그램으로 try/catch로 끝내고 null의 이름을 확인하십시오.

0

Name은 메서드와 달리 속성이므로 "getter"비트는 Microsoft 클래스이므로 예외를 throw하지 않을 가능성이 높으며 framework design guidelines은 getter에서 예외를 throw하지 않도록 명시 적으로 경고합니다. 이 규칙에 어딘가에 예외가 있을지도 모르지만 ...

또한 일반적으로 메타 데이터는 예외 (예 : .Net 프레임 워크 클래스)에 의해 예외가 발생하는 경우 무엇에 대한 지침으로 사용됩니다. Visual Studio에서 F12 키를 누르면 Reflector가 설치되어 있지 않은 경우 메타 데이터가 표시됩니다. 이 메소드 위의 주석 블록에서는 일반적으로 메소드가 throw 할 수있는 정확한 유형의 예외를 제공합니다.

관련 문제