public static class Membership
...{
// Events
public static event MembershipValidatePasswordEventHandler ValidatingPassword;
// Methods
static Membership();
public static MembershipUser CreateUser(string username, string password);
public static MembershipUser CreateUser(string username, string password, string email);
public static MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, out MembershipCreateStatus status);
public static MembershipUser CreateUser(string username, string password, string email, string passwordQuestion, string passwordAnswer, bool isApproved, object providerUserKey, out MembershipCreateStatus status);
public static bool DeleteUser(string username);
public static bool DeleteUser(string username, bool deleteAllRelatedData);
public static MembershipUserCollection FindUsersByEmail(string emailToMatch);
public static MembershipUserCollection FindUsersByEmail(string emailToMatch, int pageIndex, int pageSize, out int totalRecords);
public static MembershipUserCollection FindUsersByName(string usernameToMatch);
public static MembershipUserCollection FindUsersByName(string usernameToMatch, int pageIndex, int pageSize, out int totalRecords);
public static string GeneratePassword(int length, int numberOfNonAlphanumericCharacters);
public static MembershipUserCollection GetAllUsers();
public static MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords);
private static string GetCurrentUserName();
public static int GetNumberOfUsersOnline();
public static MembershipUser GetUser();
public static MembershipUser GetUser(bool userIsOnline);
public static MembershipUser GetUser(object providerUserKey);
public static MembershipUser GetUser(string username);
public static MembershipUser GetUser(object providerUserKey, bool userIsOnline);
public static MembershipUser GetUser(string username, bool userIsOnline);
public static string GetUserNameByEmail(string emailToMatch);
private static void Initialize();
public static void UpdateUser(MembershipUser user);
public static bool ValidateUser(string username, string password);
// Properties
public static string ApplicationName ...{ get; set; }
public static bool EnablePasswordReset ...{ get; }
public static bool EnablePasswordRetrieval ...{ get; }
public static string HashAlgorithmType ...{ get; }
internal static bool IsHashAlgorithmFromMembershipConfig ...{ get; }
public static int MaxInvalidPasswordAttempts ...{ get; }
public static int MinRequiredNonAlphanumericCharacters ...{ get; }
public static int MinRequiredPasswordLength ...{ get; }
public static int PasswordAttemptWindow ...{ get; }
public static string PasswordStrengthRegularExpression ...{ get; }
public static MembershipProvider Provider ...{ get; }
public static MembershipProviderCollection Providers ...{ get; }
public static bool RequiresQuestionAndAnswer ...{ get; }
public static int UserIsOnlineTimeWindow ...{ get; }
// Fields
private static char[] punctuations;
private static bool s_HashAlgorithmFromConfig;
private static string s_HashAlgorithmType;
private static bool s_Initialized;
private static Exception s_InitializeException;
private static object s_lock;
private static MembershipProvider s_Provider;
private static MembershipProviderCollection s_Providers;
private static int s_UserIsOnlineTimeWindow;
}
说到这里,就不得不多罗嗦两句。在看Membership(Static Class)实现代码的过程中,可以发现,每一个Membersip API重载都最后都是调用属性Provider的方法,这个属性的类型就是MembershipProvider类型,只有看到这里,你也许才会理解MembershipProvider的重要作用了吧。还有一个Providers属性,这个属性就是获得web.config中配置的所有的Membership提供服务类。它们都是静态属性,但是它们怎么去实例化的呢?就是通过调用Membership. Initialize()这个方法,在每次调用这两个属性的时候,都会调用这个方法去判断是否已初始化了Membership提供服务类了,如果没有则去调用配置服务类,读取配置内容,从而进行初始化。到此你可能也就不难理解了,为什么我们使用那么简单了!
三、SqlMembershipProvider介绍和使用配置
OK,通过上面的介绍应该基本可以了解Membership的整体结构了吧?(如何还没有,可能是你没有打开Lutz Roder’s .NET Reflector去分析它的实现代码,或者是对抽象类的作用还没弄明白)。不管怎么样,我们最终的目的就是要学会如何去使用。
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!



