这是我的web.config:
<membership defaultProvider="CustomizedMembershipProvider">
<providers>
<clear />
<add name="CustomizedMembershipProvider"
connectionStringName="MYbdName"
applicationName="/" type="System.Web.Security.SqlMembershipProvider"
requiresQuestionAndAnswer="false"
passwordFormat="Clear"
enablePasswordRetrieval="true"
requiresUniqueEmail="true"
minRequiredPasswordLength="4"
minRequiredNonalphanumericCharacters="0" />
</providers>
</membership>
我甚至硬编码了用户名和密码:
bool b = Membership.ValidateUser("user@mail.com", "pass123");
当我在数据库上执行选择时,我会得到正确的用户。
用户isAproved = true
用户isLockedout = 0
答案 0 :(得分:5)
配置ASP.NET 2.0成员资格和其他提供程序时,需要设置applicationName
属性。在你的web.config中,它丢失了:
<membership defaultProvider="CustomizedMembershipProvider">
<providers>
<clear />
<add name="CustomizedMembershipProvider"
connectionStringName="MYbdName"
applicationName="/" <---------- Missing applicationName
type="System.Web.Security.SqlMembershipProvider"
requiresQuestionAndAnswer="false"
passwordFormat="Clear"
enablePasswordRetrieval="true"
requiresUniqueEmail="true"
minRequiredPasswordLength="4"
minRequiredNonalphanumericCharacters="0" />
</providers>
</membership>
您可以尝试在此处获取值
public bool Login(string userName, string password)
{
var provider = Membership.Provider;
string name = provider.ApplicationName; // Get the application name here
return Membership.ValidateUser(userName, password);
}
或打开aspnet_Users
数据库中的aspnet_Applications
和ASPNETDB
表,找出在开发过程中创建用户和其他数据时使用的应用程序名称(查看{{ 1}}表来解决这个问题。)
然后在web.cofig中正确设置属性:
aspnet_Application
有关详细信息,请阅读Scott-Gu博客中的article。
答案 1 :(得分:1)
对于遇到此问题的其他人,还要确保在创建/保存用户密码时使用的项目中使用相同的计算机密钥:
<machineKey validationKey="x" decryptionKey="x" validation="SHA1" decryption="AES" />
更多信息: https://msdn.microsoft.com/en-us/library/ff649308.aspx