注册时的ASP.NET成员资格问题

我正忙着这个会员资格。

好的,所以,这真的很奇怪。 我可以注册一个用户。 我可以注册,我可以登录。 但是,当我去注册另一个用户时,用户没有保存在数据库中,当用户尝试登录时,我得到会员凭证validation失败事件(我假设因为用户永远不会被保存)。

这是我用来保存新用户的代码。

在页面上:

protected void btnRegister_Click(object sender, EventArgs e) { if (false == ValidatePage()) return; FormsAuthentication.SignOut(); MembershipCreateStatus status; Data.User user = UserManager.CreateUser(txtEmail.Text.Trim(), txtPassword.Text.Trim(), out status); switch (status) { case MembershipCreateStatus.Success: UserManager.Save(user); break; default: lblMessage.Text = status.ToString(); break; } Response.Redirect("~/login.aspx"); } 

CreateUser方法:

 public static User CreateUser(string username, string password, out MembershipCreateStatus status) { using (TransactionScope transaction = new TransactionScope()) { MembershipUser aspnetUser = Membership.CreateUser(username, password, username, null, null, true, out status); User hqUser = null; if (status == MembershipCreateStatus.Success) { hqUser = new User(); //these properties are only for issues //that won't blow up. They can be safely removed from the system. //the aspnet membership tables take care of this stuff for us. hqUser.LastLoginDate = DateTime.Now; hqUser.DateCreated = DateTime.Now; //end properites. hqUser.Email = username; hqUser.MembershipID = (Guid)aspnetUser.ProviderUserKey; Save(hqUser); } transaction.Complete(); return hqUser; 

}}

额外的保存方法是将用户保存在应用程序的数据库中。 用户没有进入会员数据库,所以我知道它在此之前就已经死了。

有谁看到任何明显的东西在烧我? 谢谢!

你有没有检查过这是不是密码复杂性的问题? 我知道过去我遇到过这个问题……

如果状态不等于成功,则在能够查看输出之前重定向页面。

顺便说一句。 inheritancesqlmembership提供程序并使用您自己的额外数据库插入扩展它可能更好,至少在您没有插入额外数据时。 或者您在第一次创建帐户时询问的不仅仅是默认内容?

尝试使用此代码,看看枚举在lblMessage中的价值

protected void btnRegister_Click(object sender,EventArgs e){

  if (!ValidatePage()) return; FormsAuthentication.SignOut(); MembershipCreateStatus status; Data.User user = UserManager.CreateUser(txtEmail.Text.Trim(), txtPassword.Text.Trim(), out status); switch (status) { case MembershipCreateStatus.Success: UserManager.Save(user); Response.Redirect("~/login.aspx"); break; default: lblMessage.Text = status.ToString(); break; } } 

grrgr,愚蠢的标记事情

希望这可以帮助。

我的第一个猜测是ValidatePage()返回false。