我创建了一个自定义MembershipProvider类,到目前为止一直很好,但是,我不知道如何从web.config文件中读取配置设置。
我试图从谷歌和Stackoverflow搜索,似乎有人也经历了我的 问题并被问到,但没有给出答案。
这应该是一件简单的事情,但我在网络开发方面非常新,所以从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
设置,请提供帮助。
答案 0 :(得分: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;
答案 1 :(得分:9)
由于这是默认提供者,因此应该足够:
int i = Membership.MinRequiredPasswordLength;
这将返回一个指定所需密码最小长度的int。
答案 2 :(得分:2)
如果您已经覆盖了自己班级中的System.Web.Security.MembershipProvider
,则可以通过调用System.Web.Security.Membership
方法获取Robban建议的web.config成员资格设置。但是,这些调用将定向到您的成员资格提供程序类,因此您需要提供一些实现。
假设您已覆盖MembershipProvider
类并在配置文件中添加了一个部分,如上面的原始问题所示。对int i = Membership.MinRequiredPasswordLength
的调用将指向您的实现。这可能如下所示:
public override int MinRequiredPasswordLength
{
get { return _minRequiredPasswordLength; }
}
MSDN提供了一个完整的示例here。该示例显示了如何读取配置文件以设置_minRequiredPasswordLength
等本地属性。