我正在开发一个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
而失败。
答案 0 :(得分:2)
这里有几个潜在的问题:
您更改了web.config中的machinekey。如果是这样,请将其更改回来。如果您无法更改它,请删除表中的所有用户并重新创建它们。您正在使用单向散列算法,该算法要求machinekey散列输入的密码以进行比较。
您对连接字符串进行了更改。您确定数据库中是否包含这些用户记录?接下来,您是否碰巧删除/重新创建了数据库?如果是这样那些用户就不见了。见#1。
更重要的是,很明显你没有把所有东西都放回去。
那么,为什么登录失败?可能的选择是:
基本上,可能是时候重新开始清理数据库并再次将用户添加到数据库中。