代码之家  ›  专栏  ›  技术社区  ›  Sara Chipps

ASP。NET成员资格注册问题

  •  -1
  • Sara Chipps  · 技术社区  · 17 年前

    我在处理会员事务时遇到了困难。

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

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

    在页面上:

    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;
    

    }}

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

    有人看到什么明显的东西在烧我吗?谢谢!

    3 回复  |  直到 17 年前
        1
  •  2
  •   GEOCHET S.Lott    17 年前

    您是否检查过这不是密码复杂性的问题?我知道我过去在这方面遇到过问题。..

        2
  •  1
  •   Erik Lieben    17 年前

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

    顺便说一句,最好继承sqlmembership提供程序,并使用自己的额外db插入对其进行扩展,至少在不插入额外数据的情况下是这样。或者,您在首次创建帐户时要求的不仅仅是默认内容?

    像这段代码一样尝试,看看lblMessage中枚举的值是什么

    受保护的void btnRegister_Click(对象发送者,参数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,愚蠢的标记

    希望这能有所帮助。

        3
  •  0
  •   Kon    17 年前

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