2010-06-08 2 views
5

Я создал собственный класс MembershipProvider, насколько это хорошо, однако, я не уверен, как читать параметры конфигурации из файла web.config.Чтение секции членства от web.config

Я попытался выполнить поиск из Google и 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, пожалуйста, помочь.

ответ

7

Как это установлено в качестве поставщика по умолчанию должно быть достаточно, чтобы:

int i = Membership.MinRequiredPasswordLength; 

И что бы вернуть Int с указанием минимальной требуемой длины пароля.

+0

Спасибо большое, что работа – PlayKid

+0

Жаль, чтобы добавить к этому, но как насчет раздела 'PasswordFormat'? – Musikero31

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; 
+0

+1 Спасибо, я искал способ загрузить поставщика по умолчанию из конфигурации. – CRice

2

Если вы заменяете System.Web.Security.MembershipProvider в своем собственном классе вы можете получить настройки членства web.config как предполагает Robban, просто называя System.Web.Security.Membership методы. Тем не менее, эти вызовы будут направлены на ваш членский класс поставщика, поэтому вам нужно будет предоставить некоторую реализацию.

Предположим, что вы переопределили класс MembershipProvider и добавили раздел в конфигурационный файл, как в исходном вопросе выше. Вызов к int i = Membership.MinRequiredPasswordLength будет направлен к ВАШЕЙ реализации. Это может выглядеть следующим образом:

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

MSDN дает полный пример here. В этом примере показано, как читать файл конфигурации, чтобы установить локальные свойства, такие как _minRequiredPasswordLength.