如果User.Identity.IsAuthenticated那么...对象引用未设置为对象的实例

时间:2010-01-02 02:44:24

标签: asp.net vb.net

好的,这个问题令我感到困惑。我有一个自定义类,我的所有页面都继承自

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

但由于某种原因,我收到了这个错误:

  

System.NullReferenceException:未将对象引用设置为对象的实例。

在这一行

If User.Identity.IsAuthenticated Then

这仅在IIS7中开始。我一直在IIS6中使用这个应用程序超过一年没有问题,直到我昨天迁移到IIS7才开始这个异常。

3 个答案:

答案 0 :(得分:2)

尝试:

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

答案 1 :(得分:1)

您应该使用Request.IsAuthenticated而不是Page.User.Identity.IsAuthenticated。

If Request.IsAuthenticated Then 'Do stuff End If

内部Request.IsAuthenticated将验证用户及其身份是否已设置(非空)。您可以在代码中执行相同的操作

答案 2 :(得分:0)

使用Request.IsAuthenticated代替。它检查空用户。请参阅What is the difference between HttpContext.Current.Request.IsAuthenticated and HttpContext.Current.User.Identity.IsAuthenticated?

但是,目前还不清楚为什么迁移后行为会发生变化。