Member.Providers GetUser 在使用用户名时返回 null
本文关键字:返回 null 用户 Providers GetUser Member | 更新日期: 2023-09-27 17:57:14
top 函数返回
成员资格用户,而第二个函数则不返回。 我已经为一个用户的用户名传递了用户名,该用户的顶部函数获得了结果,但第二个函数只返回 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 中的应用程序名称应与表中aspnet_Applications应用程序名称匹配
我发现了真正导致问题的原因。 最近,我更改了应用程序名称,以免与成员资格中的其他应用程序冲突。 我忘记更新 web.config 文件的成员部分中的应用程序名称:
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 时找到了用户,但在根据字符串用户名查找用户时,成员资格需要具有正确的应用程序范围。
好的。 所以这只是一种可能的方法,但基本上我只是使用实体框架进行了查找。 我仍然愿意接受建议。
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);
}