2010-06-08 56 views
5

我已经创建了一个自定义MembershipProvider类,但迄今为止,我不确定如何从web.config文件读取配置设置。从web.config读取成员资格部分

我试图从谷歌和Stackoverflow搜索,似乎有人也遇到我的问题 问,但没有给出答案。

它应该是一件简单的事情,但我在web开发中非常新,所以从web.config读取设置看起来对我来说太过技术性。

这里是我的设置:

<membership defaultProvider="CustomMembershipProvider"> 
    <providers> 
    <clear/> 
    <add name="CustomMembershipProvider" 
     type="Test.Models.CustomMembershipProvider,Test" 
     passwordFormat="Hashed" 
     connectionStringName="ApplicationServices" 
     minRequiredPasswordLength="8" 
     minRequiredNonalphanumericCharacters="0" 
     maxInvalidPasswordAttempts="5" 
     enablePasswordReset="false" 
     enablePasswordRetrieval="false" 
     requiresQuestionAndAnswer="false" 
     applicationName="/"/> 
    </providers> 
</membership> 

我想读的minRequiredPasswordLength设置,请协助。

回答

7

由于这是设置为默认的供应商应该是足够的:

int i = Membership.MinRequiredPasswordLength; 

这将返回一个int,指定所需的最小密码长度。

+0

非常感谢,这项工作 – PlayKid 2010-06-08 11:46:03

+0

很抱歉,添加到此,但'PasswordFormat'节怎么样? – Musikero31 2012-11-29 06:59:18

20

这里是代码的解决方案:

 MembershipSection membershipSection = (MembershipSection)WebConfigurationManager.GetSection("system.web/membership"); 
     string defaultProvider = membershipSection.DefaultProvider; 
     ProviderSettings providerSettings = membershipSection.Providers[defaultProvider]; 
     string connectionStringName = providerSettings.Parameters["connectionStringName"]; 
     string connectionUsername = providerSettings.Parameters["connectionUsername"]; 
     string connectionPassword = providerSettings.Parameters["connectionPassword"]; 
     string connectionString = WebConfigurationManager.ConnectionStrings[connectionStringName].ConnectionString; 
+0

+1谢谢,我正在寻找一种方法来从config中加载默认提供程序。 – CRice 2011-01-07 06:43:30

2

如果您在自己的类中重写的System.Web.Security.MembershipProvider你可以在web.config成员设置为Robban表明,仅仅通过调用System.Web.Security.Membership方法。但是,这些调用将直接指向您的成员资格提供程序类,因此您需要提供一些实现。

假设您已经覆盖了MembershipProvider类,并在配置文件中添加了一个部分,如上面的原始问题所示。对int i = Membership.MinRequiredPasswordLength的调用将被引导至您的实施。这可能看起来像这样:

public override int MinRequiredPasswordLength 
    { 
     get { return _minRequiredPasswordLength; } 
    } 

MSDN给出了一个完整的例子here。该示例显示如何读取配置文件以设置本地属性,如_minRequiredPasswordLength