2009-05-27 4 views
-1

Я вывел класс от MembershipProvider в System.Web.Security со следующим определением:Получить Свойства MembershipProvider от Web.Config

public class RedditMembershipProvider : MembershipProvider 
    { 

     public RedditMembershipProvider() 
     { 

     } 
     public override int PasswordAttemptWindow 
     { 
      get { return 10; } 
     } 
     /* snip all the similar properties definition 
       */ 
    } 

Этим вопросом я хочу, когда RedditMembershipProvider конкретизируется, я хочу, чтобы все свойства, которые будут читать web.config, не из определения кода выше:

<membership defaultProvider="RedditMembershipProvider"> 
<providers> 
<clear/> 
<add name="RedditMembershipProvider" 
    type="RedditClone.Models.RedditMembershipProvider" 
    PasswordAttemptWindow=20 
    /> 
</providers> 
</membership> 

Так что, когда я называю PasswordAttemptWindow с видом, я должен получить 20, а не 10. Но теперь я получаю 10, а не 20.

Любая идея, как решить эту проблему?

ответ

0

Глупый я! Как я могу совершить такую ​​ошибку?

мне просто нужно прочитать web.config в моем коде, чтобы получить значение из

public override int PasswordAttemptWindow 
    { 
     get { ConfigurationManager.AppSettings["membership"].value; } 
    } 

Еще проще будет наследовать RedditMembershipProvider от SqlMembershipProvider и переопределять только необходимые детали.

1
public class YourMembershipProvider : MembershipProvider 
{ 
    public override void Initialize(string name, NameValueCollection config) 
    { 
     if (!String.IsNullOrEmpty(config["yourValue"])) 
     { 
      _yourValue = config["yourValue"]; 
     } 

     base.Initialize(name, config); 
    } 

    string _yourValue; 
    public override string YourValue 
    { 
     get 
     { 
      return _yourValue; 
     } 
    } 

    ... 
} 

Редактировать: typo.

0

Ответ 1 - элегантный способ. Например, чтобы прочитать свойство minRequiredPasswordLength использовать

public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config) { 
    if (!String.IsNullOrEmpty(config["minRequiredPasswordLength"])) { 
     _minRequiredPasswordLength = Int32.Parse(config["minRequiredPasswordLength"]); 
    } 
    base.Initialize(name, config); 
} 

, а затем

public override int MinRequiredPasswordLength { 
    get { return _minRequiredPasswordLength; } 
} 
Смежные вопросы