2

顶部功能返回会员用户,而第二个不返回。我已经为一个用户传递了用户名,该用户的顶部函数得到了结果,但第二个函数只返回 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);
}
4

3 回答 3

5

web.config 中的 applicationNames 应与 aspnet_Applications 表中的应用程序名称匹配

于 2015-05-14T17:45:48.583 回答
2

我发现了真正导致问题的原因。最近我更改了应用程序名称,以免与会员中的其他应用程序冲突。我忘记在我的 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 时找到了用户,但在根据字符串 username 查找用户时,该成员资格需要具有正确的应用程序范围。

于 2013-02-07T01:05:04.787 回答
0

好的。所以这只是一种可能的方式,但基本上我只是使用实体框架进行了查找。我仍然愿意接受建议。

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);
}
于 2013-02-04T23:30:44.593 回答