2010-06-08 103 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