2014-02-28 62 views
4

這裏是我的web.config:ASP.NET Membership.ValidateUser()始終返回 「假」

<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("[email protected]", "pass123"); 

當我執行select在數據庫上我得到正確的用戶。

用戶isAproved =真

用戶isLockedout = 0

回答

5

您需要設置applicationName屬性配置ASP.NET 2.0成員和其他供應商的時候。在你的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_Usersaspnet_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從斯科特谷的博客。