我需要有关何时以及如何创建 ASP.NET 成员资格提供程序以及有关其生命周期和垃圾收集的信息。我尝试寻找相同的信息,但无法找到具体信息。
2 回答
我没有亲自创建 CustomMembershipProvider(使用基于 MVC4 的 SimpleMembershipProvider)。但是查看周围的信息可以告诉您,当您实现从 MembershipProvider 派生的 CustomMembershipProvider 时,您将实现以下方法。
公共覆盖无效初始化(字符串名称,NameValueCollection 配置)
Initialize() 方法将由您的应用程序根调用(除非您想根据不同的需要控制生命周期)。
例如,如果您在 VS2012 中创建一个新的 MVC4 Web 应用程序 Internet 模板,您将看到 AccountController 应用了一个属性“InitializeSimpleMembershipAttribute”。此属性确保成员资格提供程序在每个应用程序生命周期中仅初始化和初始化一次。
您可能会看到此初始化以不同的方式完成,例如在应用程序启动期间在 Global.asax.cs 中设置的 RegisterGlobalFilters() 方法中注册您的属性,或使用并在那里初始化成员资格提供程序注册启动方法。
程序集:WebActivator.PreApplicationStartMethod
根据您初始化自定义成员资格提供程序的方式,您将看到它何时被释放。如果它在应用程序启动期间作为应用程序初始化代码的一部分进行初始化,那么它将在应用程序拆除期间或在您使用“ApplicationShutdownMethodAttribute”注册的方法中被处理掉。
请查看此链接以获取有关如何创建自定义会员提供程序的更多信息,这可能会有所帮助。
寿命
成员资格提供者基于作为单例的提供者模型。
仅当应用程序使用/调用其方法之一时,才会调用提供者的Initialize方法。初始化提供程序后,它会使用相同的设置,直到应用程序被释放。
换句话说,如果用户只浏览公开可用的页面,他们就不需要登录,并且应用程序根本没有机会初始化 Membership 提供程序。
垃圾收集
Provider 在应用程序结束时释放内存。.NET Framework 管理垃圾收集。(我可能错了;我无法回答这个问题)