我正忙着这个会员资格。
好的,所以,真的很奇怪。我可以注册一个用户。我可以注册,我可以登录。但是,当我去注册另一个用户时,用户没有保存在数据库中,我得到了一个 当用户尝试登录时,会员凭证验证失败事件(我假设因为永远不会保存用户)。以下是我用来保存新用户的代码。
在页面上:
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;
}}
额外的保存方法是将用户保存在应用程序的数据库中。用户没有进入会员数据库,所以我知道它在此之前就已经死了。
有人看到任何明显的东西在烧我吗?谢谢!答案 0 :(得分:2)
您是否检查过这不是密码复杂性的问题?我知道我以前遇到过这个问题......
答案 1 :(得分:1)
如果状态不等于成功,则在能够查看输出之前重定向页面。
顺便说一下。继承sqlmembership提供程序并使用您自己的额外数据库插入扩展它可能更好,至少如果您没有插入额外的数据。或者您是否在第一次创建帐户时询问的内容超过了默认内容?
尝试使用此代码并查看枚举值在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,愚蠢的标记事物
希望这有帮助。
答案 2 :(得分:0)
我的第一个猜测是ValidatePage()
返回false。