自定义成员资格提供程序初始化方法



重写 MemberProvider 并直接调用它时,有没有办法填充 Initialize 方法的 NameValueCollection 配置参数,而无需手动查看配置文件中的设置?

显然,这个初始化是由 asp.net 调用的,并且配置正在某处填充。我已经实现了自己的会员提供程序,它通过内置控件工作正常。我想创建我的提供程序的新实例并直接调用它,但我真的不想解析 MemberProvider 的 .config,它是连接字符串名称,然后是连接字符串(如果已经在某处完成)。

tvanfosson- 感谢您的帮助。(如果我有必要的15分,我会投票给你)

从您的链接中,我能够弄清楚。 事实证明,初始化过程的第二个参数是来自提供程序的参数列表,可以通过以下方式访问:

string configPath = "~/web.config";
Configuration config = WebConfigurationManager.OpenWebConfiguration(configPath);
MembershipSection section = (MembershipSection)config.GetSection("system.web/membership");
ProviderSettingsCollection settings = section.Providers;
NameValueCollection membershipParams = settings[section.DefaultProvider].Parameters;
Initialize(section.DefaultProvider, membershipParams);

不知道为什么要创建一个新的,但是如果你自己创建它,你需要阅读 web 配置并自己获取值以传递给 Initialize(),因为这是在类外完成的。 不过,我敢肯定,本节已经有一个部分处理程序,所以它应该只是一个问题:

MembershipSection section  = WebConfigurationManager.GetSection("membership");

然后找到提供程序并访问其属性以构造 NameValueCollection。 我认为您不必编写任何代码来解析配置部分。

下面是 MSDN 上的成员资格部分文档。 从那里向下钻取。

在任何情况下,

都不应创建 MemberProvider 的实例。它通过标准 asp.net 基础结构创建和初始化。您可以通过如下代码访问它:

var customerMembership = Member.Provider;

最新更新