问题描述
|
我只是创建了成员资格管理程序,该程序可以一个一个地创建用户,它也可以从文本文件导入数据。当我从文本文件导入数据时,它可以在超时之前创建大约30个用户,而在我调试之后,每个createuser调用大约需要1秒钟的时间。
我想知道,当我创建大量的aspnet用户时,如何提高性能。
解决方法
解决方案1:
从用户表中获取所有数据到表“用户”中的数据集ds中
将成员表中的所有数据获取到同一数据集ds中的表“成员”中
在字段userid的两个表之间创建关系
在表用户的每一行上运行循环
对于每个用户,请使用UserName和Password作为参数调用Membership.CreateUser
获取当前用户DataRow.GetChildRows的所有子行
对于返回的每个子行,以用户名和角色名作为参数调用Roles.AddUserToRole(仅在角色处于活动状态时添加)
从这里拍摄。
解决方案2:
下载Peter Keller的会员编辑器
使用以下列创建SpreadSheet:用户名,密码和电子邮件。
将此excel文件作为表导入到此数据库:yourUsers $
创建一个Winforms应用程序,添加一个按钮以形成表单并将此代码粘贴到其click事件中:
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();
}
从这里拍摄。