![](/img/trans.png)
[英]Membership.GetUser() // GetUser(userName) returns a null user
[英]Membership.Providers GetUser returns null when using username
最重要的功能是返回会员用户,而第二个功能则不。 我已经为顶级功能获得结果的用户传递了用户名,但第二个只返回了null。 有任何基于用户名获取用户的建议吗?
public static MembershipUser getCCUser(Guid UserID)
{
return ((MembershipProvider)Membership.Providers["CC_MembershipProvider"]).GetUser(UserID, false);
}
public static MembershipUser getCCUser(string userName)
{
return ((MembershipProvider)Membership.Providers["CC_MembershipProvider"]).GetUser(userName, false);
}
在web.config中的applicationNames应与aspnet_Applications表中的应用程序名称
我发现了真正引起问题的原因。 最近我更改了应用程序名称,以免与成员资格中的其他应用程序冲突。 我忘了更新web.config文件的Membership部分中的应用程序名称:
Web.config(为简便起见):
<membership>
<providers>
<clear/>
<add name="AA_MembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="AA_MEMBERSHIP" applicationName="/"/>
<add name="CC_MembershipProvider" applicationName="/"/>
</providers>
</membership>
应该阅读:
<membership>
<providers>
<clear/>
<add name="AA_MembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="AA_MEMBERSHIP" applicationName="/"/>
<add name="CC_MembershipProvider" applicationName="CCPortal"/>
</providers>
</membership>
这里有趣的一点是,我在使用基于Guid的用户ID时找到了用户,但是在根据字符串用户名查找用户时,成员资格必须具有正确的应用程序范围。
好。 因此,这只是一种可能的方式,但是基本上我只是使用Entity Framework进行了查找。 我仍然愿意接受建议。
public static MembershipProvider CCMembershipProvider
{
get
{
return ((MembershipProvider)Membership.Providers["CC_MembershipProvider"]);
}
}
public static MembershipUser getCCUser(Guid UserID)
{
return CCMembershipProvider.GetUser(UserID, false);
}
public static MembershipUser getCCUser(string userName)
{
//This function is BS. For some reason userName always gets null. Unfortunately UsersInRole only gives a string[]
//Soo... Here is the jenky workaround...
userName = userName.ToLower();
CCPortal.MEMBERSHIPEntities context = new CC.MEMBERSHIPEntities();
CCPortal.aspnet_Users user = context.aspnet_Users.SingleOrDefault(u => u.LoweredUserName == userName);
return getCCUser(user.UserId);
//This is what We should be using....
//return CCMembershipProvider.GetUser(userName, false);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.