Asp.net

無法為自定義 MembershipProvider 創建 MembershipUser

  • June 20, 2014

我創建了一個自定義成員資格提供程序,並在嘗試創建新的“MembershipUser”時遇到以下錯誤。

無法從程序集“System.Web,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”載入類型“MyTestApp.Membership.TestMembershipProvider”。

我從一個單元測試項目執行它,所以我不確定這是否導致了問題,但我確實包含了 System.Web、System.Web.ApplicationServices 以及對 MyApp.Membership 和 MyApp.DataModels 的引用(實體對象)。

錯誤發生在下面的“GetUser”函​​數中,我的配置也在下面。

public override MembershipUser GetUser(object providerUserKey, bool userIsOnline)
{
   try
   {
       AccountEntities db = new AccountEntities();

       if ((providerUserKey is Guid) == false)
       {
           return null;
       }

       User user = (from u in db.Users
                    where u.UserId == (Guid)providerUserKey
                    && u.Application.LoweredApplicationName == this.ApplicationName.ToLower()
                    select u).FirstOrDefault();

       if (user != null)
       {   // ERROR: Starts here, user object is correct, data is all there.
           return new MembershipUser(this.ProviderName, user.UserName, (object)user.UserId, user.Email, user.PasswordQuestion, user.Comment, user.IsApproved, user.IsLockedOut, user.CreateDate, user.LastLoginDate, user.LastActivityDate, user.LastPasswordChangedDate, user.LastLockoutDate);
       }
       else
           return null;
   }
   catch (Exception ex)
   {
       this.WriteToEventLog(ex, "Unable to get user from object '{" + ((Guid)providerUserKey).ToString() + "}'.", "Get User");
       return null;
   }
}
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
 <connectionStrings>
   <add name="AccountEntities" connectionString="metadata=res://*/Account.AccountDataModel.csdl|res://*/Account.AccountDataModel.ssdl|res://*/Account.AccountDataModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=&quotEDITED";Initial Catalog=CustomAuthentication;Persist Security Info=True;User ID=EDITED;Password=EDITED;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" />
 </connectionStrings>
 <system.web>
   <membership defaultProvider="TestMembershipProvider" userIsOnlineTimeWindow="15">
     <providers>
       <clear/>
       <add  name="TestMembershipProvider" type="MyTestApp.Membership.TestMembershipProvider"
             applicationName="/"
             description="Membership Test"
             enablePasswordReset="true"
             enablePasswordRetrieval="true"
             maxInvalidPasswordAttempts="3"
             minRequiredNonAlphanumericCharacters="8"
             minRequiredPasswordLength="8"
             passwordAttemptWindow="30"
             requiresQuestionAndAnswer="true"
             requiresUniqueEmail="true" />
     </providers>
   </membership>
 </system.web>
</configuration>

我剛剛注意到我錯過了配置中的以下部分

type="MyTestApp.Membership.TestMembershipProvider, MyTestApp.Membership"

現在工作!

引用自:https://stackoverflow.com/questions/4046007