1

这是一个 Web 表单应用程序项目 (WAP)。我正在以编程方式创建具有自定义配置文件属性的用户,并且可以看到用户数据保留在 Users 表中,但不在 aspnet_membership 或 Memberships 表中。使用自定义注册表单创建新用户后,登录失败。任何人都可以建议故障排除清单吗?

MembershipCreateStatus status = MembershipCreateStatus.Success;
MembershipUser newUser 
    = Membership.CreateUser(userNameTxt.Text.Trim(), passwordTxt.Text, 
        emailTxt.Text, questionTxt.Text, answerTxt.Text, true, out status);
Roles.AddUserToRole(userNameTxt.Text.Trim(), "Member");

// Gather and save Profile info
CustomProfile profile = CustomProfile.GetProfile(userNameTxt.Text.Trim());
profile.Personal.Email = emailTxt.Text.Trim();
profile.Personal.FirstName = firstNameTxt.Text.Trim();
profile.Personal.LastName = lastNameTxt.Text.Trim();
profile.Save();

错误消息:您的登录尝试不成功。请再试一次。

发生了什么: CreateUser 返回 null

      <providers>
          <remove name="DefaultMembershipProvider"/>
          <add 
              name="DefaultMembershipProvider" 
              type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
              connectionStringName="LocalSqlServer" 
              enablePasswordRetrieval="false" 
              enablePasswordReset="true" 
              requiresQuestionAndAnswer="true" 
              requiresUniqueEmail="false" 
              minRequiredPasswordLength="6" 
              minRequiredNonalphanumericCharacters="0" 
              passwordAttemptWindow="1000" 
              passwordFormat="Hashed"
              applicationName="/" />
      </providers>

<remove name="LocalSqlServer" />
    <add name="LocalSqlServer" 
      connectionString="Initial Catalog=MYDB;Data Source=WIN2K8;Integrated Security=SSPI;"
      providerName="System.Data.SqlClient" />
    <remove name="MYDBConn" />
      <add name="MYDBConn" connectionString="Initial Catalog=MYDB;Data Source=WIN2K8;Integrated Security=SSPI;"
          providerName="System.Data.SqlClient" />
4

2 回答 2

0

在从您的代码创建用户之前,请确保您可以使用ASP.Net Configuration创建用户。

在此处输入图像描述

以下是一些建议“您的登录尝试不成功。请重试。” - ASP.NET 登录控件。

于 2012-11-28T19:56:18.890 回答
0

显然,在 .NET 4 中,使用的默认哈希算法是 HMACSHA256,而不是以前的 Framework 版本中的 SHA1。我在这里找到了解决方案:

ASP.NET Membership - 用户密码存储

从 3.5 升级到 ASP.net 4.0 后登录失败

我刚刚调整了 SHA1 的配置文件,如下所示:

<membership defaultProvider="DefaultMembershipProvider" hashAlgorithmType="SHA1">
    ...
</membership>
于 2012-11-29T03:36:20.523 回答