在Forms身份validation中获取当前的MembershipUser

我想从我的页面获取当前的MembershipUser

 Membership.GetUser(); 

返回null。

不能用

 HttpContext.Current.User.Identity.Name 

因为它根据我的配置返回我的配置文件名称以获取用户名。

我如何获得当前用户?

更新:成员资格提供程序是SqlMembershipProvider

  1. Membership.GetUser()仅适用于经过身份validation的用户。 否则,它将返回null。 要validation您是否正在处理经过身份validation的请求,请在页面上调用“User.Identity.IsAuthenticated”。 如果您有经过身份validation的请求,但Membership.GetUser()仍返回null,则表示在Membership数据源中找不到与经过身份validation的用户关联的用户名。 使用“User.Identity.Name”validation经过身份validation的用户的用户名。

  2. 如果你正在调用其中一个使用用户名并且返回null的Membership.GetUser()重载,那么该成员数据源中不存在该用户(或者我们有一个错误)。 轻松validation这一点的一种方法是尝试使用相同用户名的Membership.CreateUser()。 如果由于重复的用户而没有引发错误,那么您就知道用户从未存在过。

  3. Membership.GetUser()应该从未为匿名用户工作过。 处理此案例时,会员资格中没有内置支持。

你试过Page.User.Identity.Name吗?

 Membership.GetUser(); 

完全有效,你可能在这里有配置问题,仔细检查你的web.config并确保一切正确,特别是表单部分。