这是我的 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
用户已锁定 = 0
在配置 ASP.NET 2.0 Membership 和其他 Provider 时需要设置 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);
}
或者打开 ASPNETDB
数据库中的 aspnet_Users
和 aspnet_Applications
表,找出在创建用户和其他信息时使用的应用程序名称开发期间的数据(查看 aspnet_Application
表以解决此问题)。
然后在你的 web.cofig 中正确设置属性:
<membership defaultProvider="CustomizedMembershipProvider">
<providers>
<clear />
<add name="CustomizedMembershipProvider"
connectionStringName="MYbdName"
applicationName="MyAppName" <---------- correct
type="System.Web.Security.SqlMembershipProvider"
requiresQuestionAndAnswer="false"
passwordFormat="Clear"
enablePasswordRetrieval="true"
requiresUniqueEmail="true"
minRequiredPasswordLength="4"
minRequiredNonalphanumericCharacters="0" />
</providers>
</membership>
有关更多详细信息,请阅读此 article来自 Scott-Gu 的博客。