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