Asp.net
無法為自定義 MembershipProvider 創建 MembershipUser
我創建了一個自定義成員資格提供程序,並在嘗試創建新的“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="EDITED";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"現在工作!