Asp.net mvc 控制器中的用户为空,但视图中的用户具有值

Asp.net mvc 控制器中的用户为空,但视图中的用户具有值,asp.net-mvc,authentication,identity,Asp.net Mvc,Authentication,Identity,我使用ASP.NET MVC 5和Identity进行身份验证,我的问题在于以下代码: User.Identity.IsAuthenticated User为空,但我在视图中使用了上面的代码,比如belowe,它的工作很好,用户有价值 @if (User.Identity.IsAuthenticated) {...} 什么事? 要做到这一点,我在谷歌上搜索,并找到一种方法 protected override void Initialize(System.Web.

我使用
ASP.NET MVC 5
Identity
进行
身份验证
,我的问题在于以下代码:

User.Identity.IsAuthenticated
User
为空,但我在视图中使用了上面的代码,比如belowe,它的工作很好,用户有价值

  @if (User.Identity.IsAuthenticated)
            {...}
什么事?

要做到这一点,我在谷歌上搜索,并找到一种方法

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        base.Initialize(requestContext);
    }

我怀疑您试图在控制器的构造函数中调用此方法。此构造函数在HTTP请求执行管道中调用得太早,HttpContext在那里不可用。您可以在Initialize方法内访问HttpContext:

protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
    base.Initialize(requestContext);

    // Now you can access the HttpContext and User
    if (User.Identity.IsAuthenticated)
    {
        ...
    }
}

您在哪里使用此代码?如果您试图在控制器的构造函数中执行此操作,那么它将为null,因为这太早了。我在BaseController和其他控制器继承中使用了
Initialize
,在
Initialize
方法中,您应该能够访问HttpContext。您能告诉我们您试图实现什么吗?也许我们可以建议一种不同的方法来完成您正在尝试的操作