【问题标题】:Reading membership section from web.config从 web.config 读取会员部分
【发布时间】:2011-03-01 02:57:46
【问题描述】:

我创建了一个自定义 MembershipProvider 类,到目前为止一切都很好,但是,我不确定如何从 web.config 文件中读取配置设置。

我尝试从 Google 和 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设置,请协助。

【问题讨论】:

    标签: c# model-view-controller membership web-config


    【解决方案1】:

    这是代码中的解决方案:

            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;
    

    【讨论】:

    • +1 谢谢,我正在寻找一种从配置加载默认提供程序的方法。
    【解决方案2】:

    由于这被设置为您的默认提供程序,它应该足以:

    int i = Membership.MinRequiredPasswordLength;
    

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

    【讨论】:

    • 抱歉添加到这里,但是PasswordFormat 部分怎么样?
    【解决方案3】:

    如果您在自己的类中覆盖了System.Web.Security.MembershipProvider,您可以按照Robban 的建议获取web.config 成员资格设置,只需调用System.Web.Security.Membership 方法即可。但是,这些调用将被定向到您的成员资格提供程序类,因此您需要提供一些实现。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      相关资源
      最近更新 更多