2010-01-02 3 views
0

그래,이 문제는 나를 괴롭 히고 있습니다. 내 모든 페이지If User.Identity.IsAuthenticated If ... 객체 참조가 객체의 인스턴스로 설정되지 않았습니다.

Public Class Page : Inherits Page 
    Private Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load 
     'Display Admin Controls (Buttons) ' 
     If User.Identity.IsAuthenticated Then 
      'do some stuff ' 
     End If 
    End Sub 
End Class 

에서 상속 그러나 사용자 정의 클래스가이 오류 받고 있어요 어떤 이유로이는 일이 시작

If User.Identity.IsAuthenticated Then 

이 라인에

System.NullReferenceException: Object reference not set to an instance of an object.

을 IIS7에서. 저는 IIS6에서이 응용 프로그램을 1 년 이상 사용하지 않았으며 어제 IIS7로 마이그레이션 한 이후로이 예외가 시작되었습니다.

+0

안녕하세요, 사용자가 로그인하지 않은 경우에만 예외가 발생합니까? – keyboardP

+0

web.config에서 인증 및 멤버십 태그는 어떻게 구성됩니까? – bendewey

+0

이것은 IIS7에서만 시작되었습니다. 저는 IIS6에서이 응용 프로그램을 1 년 이상 사용하지 않았으며 어제 IIS7로 마이그레이션 한 이후로이 예외가 시작되었습니다. –

답변

2

보십시오 : 대신

If User IsNot Nothing AndAlso 
    User.Identity IsNot Nothing AndAlso 
    User.Identity.IsAuthenticated Then 
    'Do stuff 
End If 
+0

감사합니다. 나는 당신이 대답하기 바로 전에 똑같은 내용으로 그것을 고쳤습니다. 그러나 AndAlso 대신에 중첩 된 If 문을 사용했습니다. 클린 팩터에 대해서도 And And로 변경하겠습니다. 감사 –

0

Page.User.Identity.IsAuthenticated 대신 Request.IsAuthenticated를 사용해야합니다.

If Request.IsAuthenticated Then 'Do stuff End If

내부적으로 Request.IsAuthenticated은 사용자를 확인하고이 설정되어 신원 (null이 아닌)입니다. 코드에서 동일한 작업을 수행 할 수 있습니다.

관련 문제