2

我正在开发一个 ASP.NET 4.0 C# 项目。工作正常,但我构建的CreateUserWizard登录控件总是显示此消息:

Your login attempt was not successful. Please try again.

这开始发生在我将 machine.config 中的成员资格和连接字符串设置更改为实验后,我稍后将其更改为默认值,即:

这是连接字符串设置:

<connectionStrings>
    <add name="LocalSqlServer" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
</connectionStrings>

这是会员部分:

<membership>
    <providers>
        <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="LocalSqlServer" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="7" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" passwordStrengthRegularExpression=""/>
</providers>
</membership>

另外,我更改了默认数据库以将我的网站数据存储到登录控件默认数据,即ASPNEDB.mdf在页面后面的每个代码中写两行

SqlConnection con = new SqlConnection("data source=.\\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true");
SqlCommand cmd = new SqlCommand();

即使我CreateUserWizard1成功完成并重定向到我使用默认标签 asp.netLoginName的 homepage.aspx,标签仍显示为空白。

如果我手动输入Label1并输入Label1.Text = HttpContext.Current.User.Identity.Name;,它仍然无法正常工作。

请你帮帮我。我必须向我的大学展示这个项目,不仅如此,我的团队也会因为我的EXPERIMENT.

4

1 回答 1

3

这里有几个潜在的问题:

  1. 您更改了 web.config 中的机器密钥。如果是这样,请将其更改回来。如果您无法将其更改回来,请删除表中的所有用户并重新创建它们。您正在使用一种单向哈希算法,该算法需要机器密钥对输入的密码进行哈希处理以进行比较。

  2. 您对连接字符串进行了更改。您确定数据库中甚至包含这些用户记录吗?接下来,您是否碰巧删除/重新创建了数据库?如果是这样,那些用户就消失了。见#1。

更重要的是,很明显你并没有像以前那样把所有东西都放回去。

那么,为什么登录失败?潜在的选择是:

  1. 正在访问的数据库不是您认为的那个。
  2. 用户在其查看的数据库中确实不存在。
  3. 该用户确实存在,但您提供的密码不正确。
  4. 用户存在且密码正确,但机器密钥已更改,因此系统无法正确散列。

基本上是时候通过清除数据库并再次向其中添加用户来重新开始了。

于 2011-09-14T15:27:27.473 回答