2013-10-11 64 views
0

自定義成員,我有CustomMembership項目類,並在課堂上使用此代碼:集minRequiredPasswordLength在web.config中

private static int _MinRequiredPasswordLength; 
public static int MinRequiredPasswordLength 
    { 
     set { _MinRequiredPasswordLength = value; } 
     get { return _MinRequiredPasswordLength; } 
    } 

,並在web.config中

<membership defaultProvider="CustomMembership"> 
    <providers> 
    <clear /> 
    <add name="CustomMembership" type="Project1.Code.CustomMembership, Project1, Version=1.0.0.0, Culture=neutral" connectionStringName="PConn" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" /> 
    </providers> 
</membership> 

和使用集合成員資格此代碼獲取minRequiredPasswordLength:

MinRequiredPasswordLength.Text = CMembership.MinRequiredPasswordLength.ToString(); 

但得到'0'!我想要'6'。

回答

1

嘗試:

MinRequiredPasswordLength.Text = @CustomMembership.MinRequiredPasswordLength 
+0

我用這個代碼,但得到「0」 –

+0

你有「0」,因爲你永遠不會對你的公共屬性設置值'MinRequiredPasswordLength' – AlexB

+0

我設置在web.config中 –

2

如果您已經從抽象MembershipProvider類派生的,你應該重寫MembershipProvider.Initialize。該config集合將包含所有的配置屬性,你可以用它們來設置你的屬性包括MinRequiredPasswordLength

private int _minRequiredPasswordLength; 

public override void Initialize(string name, NameValueCollection config) 
{ 
    _minRequiredPasswordLength = // get it from config["minRequiredPasswordLength"], with validation and conversion to int. 
} 

public override MinRequiredPasswordLength 
{ 
    get { return _minRequiredPasswordLength; } 
} 

如果你從現有的供應商獲得,如SqlMembershipProvider,那麼你可以簡單地使用MinRequiredPasswordLength的基類實現。

+0

幫我從配置得到它[「minRequiredPasswordLength」 ]。 –

+0

@shahinko - 基本上你使用'Int32.TryParse'來解析config [「minRequiredPasswordLength」]。然後決定你想要做什麼,如果配置參數不存在或不是有效的整數 - 可能你會想要拋出一個ProviderException或一個ConfigurationErrorsException。 – Joe