Asp.net mvc 获取会员资格提供商';来自Web.Config的属性

Asp.net mvc 获取会员资格提供商';来自Web.Config的属性,asp.net-mvc,asp.net-membership,Asp.net Mvc,Asp.net Membership,我从System.Web.Security中的MembershipProvider派生了一个类,定义如下: public class RedditMembershipProvider : MembershipProvider { public RedditMembershipProvider() { } public override int PasswordAttemptWindow {

我从
System.Web.Security
中的
MembershipProvider
派生了一个类,定义如下:

   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分


你知道怎么解决这个问题吗?

我真傻!我怎么会犯这样的错误呢

我只需要在我的代码中读取web.config就可以得到值

  public override int PasswordAttemptWindow
    {
        get { ConfigurationManager.AppSettings["membership"].value; }
    }
更简单的方法是从
SqlMembershipProvider
继承
RedditMembershipProvider
,并只覆盖必要的细节

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;
        }
    }

    ...
}

编辑:输入错误。

答案1是优雅的方式。例如,要读取属性
minRequiredPasswordLength
use

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; }
}