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);
}

Member.Providers GetUser 在使用用户名时返回 null

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);
}