C# FormsAuthentication成员资格。GetUser()Null

C# FormsAuthentication成员资格。GetUser()Null,c#,forms-authentication,C#,Forms Authentication,我使用的是表单身份验证,具有基本登录页面和默认页面 当我在登录页面,并呼吁签署这项工作只是伟大的。但是,当我仍在登录页面上时,Membership.GetUser()返回null。当我重定向到默认页面时,Membership.GetUser()返回我的用户信息 是否有任何方法可以让此方法在仍处于登录页时返回我的用户。我在谷歌上读到过很多类似的问题,只有在你重定向的时候它才会起作用 如果您需要更多信息,请告诉我 下面是我用来验证信息是否已设置的简单代码片段: bool authenticated

我使用的是表单身份验证,具有基本登录页面和默认页面

当我在登录页面,并呼吁签署这项工作只是伟大的。但是,当我仍在登录页面上时,
Membership.GetUser()
返回null。当我重定向到默认页面时,
Membership.GetUser()
返回我的用户信息

是否有任何方法可以让此方法在仍处于登录页时返回我的用户。我在谷歌上读到过很多类似的问题,只有在你重定向的时候它才会起作用

如果您需要更多信息,请告诉我

下面是我用来验证信息是否已设置的简单代码片段:

bool authenticated = User.Identity.IsAuthenticated;
            string username = User.Identity.Name;

            MembershipUser user = Membership.GetUser();

我将此代码放在登录页面和代码隐藏中的默认页面上,只有默认页面具有值,并显示在执行身份验证过程后它已通过身份验证。

这可能是因为您允许匿名用户登录页面。因此,浏览器不会向该页面发送任何不必要的信息。

其他需要尝试的是以下代码:

 MembershipUser user = Membership.GetUser(username);
 GenericIdentity identity = new GenericIdentity(user.UserName);
 RolePrincipal principal = new RolePrincipal(identity);
 System.Threading.Thread.CurrentPrincipal = principal;
 HttpContext.Current.User = principal;

我也遇到过同样的情况,下面是在MVC4.NET4.5上对我有用的东西

Membership.GetUser(HttpContext.Current.User.Identity.Name)

我有一个类似的问题,问题是我在web配置中缺少authentication method=form

<system.web>
    <authentication mode="Forms"/>
    ....

....

不要忘记有一个问题(我正在将一个旧的旧站点迁移到aspnet)

我遇到了这个问题,并发现它是由于有多个成员资格提供程序,所以

Membership.GetUser()
你可以试试

Membership.Providers["MyMembershipProvider"].GetUser()
或者更具体地说

Membership.Providers["MyMembershipProvider"].GetUser(LoginCtrl.UserName, false)

这实际上是有道理的。由于登录页面是唯一允许匿名用户使用的页面,系统无法提取成员信息,直到它位于需要经过身份验证的用户的页面上。。。非常有趣……没错。在他们登录之前,你怎么知道谁登录了?好的,谢谢你提供的信息。我敢肯定就是这样。谢谢你,太棒了!这对于使您刚刚在登录中验证的用户成为当前用户非常有用。我把它放在if(Membership.ValidateUser(model.UserName,model.Password).之后。谢谢!这解决了我的问题-只花了4个小时就找到了,谢谢!