我的ASP.NET 4登录停止工作......为什么?

时间:2011-09-14 13:46:00

标签: asp.net c#-4.0 aspnetdb

我正在开发一个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并重定向到我的homepage.aspx,我使用了asp.net LoginName的默认标签,标签显示为空白。

如果我手动输入Label1并输入Label1.Text = HttpContext.Current.User.Identity.Name;,它仍无效。

你能帮我吗?我必须向我的大学展示这个项目,不仅如此,我的团队将因EXPERIMENT而失败。

1 个答案:

答案 0 :(得分:2)

这里有几个潜在的问题:

  1. 您更改了web.config中的machinekey。如果是这样,请将其更改回来。如果您无法更改它,请删除表中的所有用户并重新创建它们。您正在使用单向散列算法,该算法要求machinekey散列输入的密码以进行比较。

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

  3. 更重要的是,很明显你没有把所有东西都放回去。

    那么,为什么登录失败?可能的选择是:

    1. 正在访问的数据库不是您认为的数据库。
    2. 用户在查看数据库时确实不存在。
    3. 用户确实存在,但您提供的密码不正确。
    4. 用户存在且密码正确,但是机器密钥已更改,因此系统无法正确散列。
    5. 基本上,可能是时候重新开始清理数据库并再次将用户添加到数据库中。