通过Membership.CreateUser创建大量会员资格的有效方法?

时间:2011-05-26 07:07:55

标签: asp.net asp.net-membership membership-provider

我只是创建会员管理程序,该程序可以逐个创建用户,也可以从文本文件导入数据。当我从文本文件导入数据时,它可以在超时之前创建大约30个用户,在我调试之后每个CreateUser调用花费将近1秒。

我想知道,当我创建大量aspnet用户时,如何提高性能。

1 个答案:

答案 0 :(得分:1)

解决方案1:

  1. 将用户表中的所有数据导入表“User”
  2. 中的数据集ds
  3. 从成员表中获取所有数据到同一数据集中的“成员”表
  4. 在字段userid
  5. 上创建两个表之间的关系
  6. 在表User
  7. 的每一行上运行循环
  8. 对于每个用户,使用UserName和Password作为参数调用Membership.CreateUser
  9. 获取当前用户的所有子行DataRow.GetChildRows
  10. 对于返回的每个子项,请使用用户名和角色名称作为参数调用Roles.AddUserToRole(仅在角色处于活动状态时添加)
    取自here
  11. 解决方案2:

    1. 下载Peter Keller's Membership Editor
    2. 使用以下列创建SpreadSheet:用户名,密码和电子邮件 将此excel文件导入此数据库,如表:yourUsers $
    3. 创建Winforms应用程序,添加一个按钮以在其点击事件中形成并粘贴此代码:

      protected void batchInsertButton_Click(object sender, EventArgs e)
      {
      string strConn = ConfigurationManager.ConnectionStrings["1ConnectionString"].ConnectionString;
      string strSQL = "SELECT * FROM yourUsers$";
      
      SqlConnection myConnection = new SqlConnection(strConn); 
      
      myConnection.Open();
      
      SqlCommand myCommand = new SqlCommand(strSQL,myConnection);
      
      SqlDataReader myReader; 
      
      
      myReader = myCommand.ExecuteReader(); 
          while (myReader.Read()) {
      
              ObjectDataSourceMembershipUser.InsertParameters["UserName"].DefaultValue = myReader["UserName"].ToString();//TextBoxUserName.Text; ;
              ObjectDataSourceMembershipUser.InsertParameters["password"].DefaultValue = myReader["password"].ToString();//TextBoxPassword.Text;
              ObjectDataSourceMembershipUser.InsertParameters["passwordQuestion"].DefaultValue ="your qestion";//TextBoxPasswordQuestion.Text;
              ObjectDataSourceMembershipUser.InsertParameters["passwordAnswer"].DefaultValue = "your answer";//TextBoxPasswordAnswer.Text;
              ObjectDataSourceMembershipUser.InsertParameters["email"].DefaultValue = myReader["email"].ToString();//TextBoxEmail.Text;
              ObjectDataSourceMembershipUser.InsertParameters["isApproved"].DefaultValue = "true";//CheckboxApproval.Checked == true ? "true" : "false";
      
      ObjectDataSourceMembershipUser.Insert();
      
      
      //hard code this user role
      Roles.AddUserToRole(myReader["UserName"].ToString(), "NormalUser"); 
      
              } 
      myConnection.Close();
      
      GridViewMemberUser.DataBind();
      GridViewRole.DataBind();
      }  
      
    4. 取自here