1
我刚刚创建会员管理程序,这个程序可以一个一个创建用户,它也可以从文本文件导入数据。当我从文本文件导入数据时,它可以在超时之前创建约30位用户,调试完成后,每次CreateUser调用需要将近1秒。通过Membership.CreateUser创建大量会员的高效方法?
我想知道,当我创建大量的aspnet用户时,如何提高性能。
我刚刚创建会员管理程序,这个程序可以一个一个创建用户,它也可以从文本文件导入数据。当我从文本文件导入数据时,它可以在超时之前创建约30位用户,调试完成后,每次CreateUser调用需要将近1秒。通过Membership.CreateUser创建大量会员的高效方法?
我想知道,当我创建大量的aspnet用户时,如何提高性能。
解决方法1:
解决方案2:
创建WinForms应用程序,添加一个按钮来形成,并在其click事件中粘贴此代码:从here两者
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();
}
。
通过ILSpy看,Roles.AddUserToRole调用Roles.AddUsersToRoles。对于NormalUser而言,建立一个用户的字符串数组(小逗号)和一个元素数组,然后在成员之后为用户添加用户角色会有好处:'string [] normalRole = new string [] {“NormalUser”}; Roles.AddUsersToRoles(userList,normalRole); '这两种方法检查Role和UserNames的有效性(逗号,长度,空值),因此它将重复验证“NormalUser”x次数,其中x是要添加的用户数量。 – 2012-05-04 18:29:12