在运行时以编程方式使用不同的Membership Provider和Role Provider

时间:2014-04-02 14:52:43

标签: asp.net asp.net-membership

我在默认的ASP.net成员资格中使用SQL server2012数据库。我在aspnet_applications表中有应用程序。

A B

从Web项目中的一个应用程序我正在为第二个Application.which创建用户,它将存储在aspnet_users表中

让我从应用 A 来自网络我正在为应用 B

创建用户

使用以下代码

Membership.ApplicationName = "B";
MembershipUser user = Membership.CreateUser(username, Membership.GeneratePassword(7, 2), email);

在创建这个新用户之后,我无法访问当前应用程序(应用程序A),直到我重新启动项目。

那么这里有什么问题?

如何将用户添加到其他应用程序?

由于

1 个答案:

答案 0 :(得分:1)

Membership.ApplicationName = "B";表示您在运行时切换应用程序名称。

实际上,您希望按名称呼叫提供商。然后使用提供程序创建用户。

MembershipProvider membershipProvider = 
    Membership.Providers["BMembershipProvider"];

Guid userId = Guid.NewGuid();

MembershipCreateStatus status;

membershipProvider.CreateUser("johndoe", "password", 
    "johndoe@email.com", "question", "answer", true, userId, out status);

if (status == MembershipCreateStatus.Success)
{
    MembershipUser user = membershipProvider.GetUser(userId, false);

    // Optional - assign the user to roles
    RoleProvider roleProvider = Roles.Providers["SiteBRoleProvider"];
    roleProvider.AddUsersToRoles(new[] {user.UserName}, new[] {"Admin"});
}

确保您在 web.config

中同时拥有两个会员提供商
<membership defaultProvider="AMembershipProvider">
  <providers>
    <add name="AMembershipProvider" 
          type="System.Web.Providers.DefaultMembershipProvider ..." 
          connectionStringName="DefaultConnection" ... />
    <add name="BMembershipProvider"
          type="System.Web.Providers.DefaultMembershipProvider ..."
          connectionStringName="DefaultConnection" ... />
  </providers>
</membership>