Чтение раздела членства от web.config - PullRequest
6 голосов
/ 08 июня 2010

Я создал собственный класс MembershipProvider, но пока все хорошо, но я не уверен, как читать параметры конфигурации из файла 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, пожалуйста, помогите.

Ответы [ 3 ]

20 голосов
/ 21 июля 2010

вот решение в коде:

        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;
9 голосов
/ 08 июня 2010

Поскольку это установлено в качестве вашего провайдера по умолчанию, этого должно быть достаточно:

int i = Membership.MinRequiredPasswordLength;

И это вернет int, указывающий минимальную необходимую длину пароля.

2 голосов
/ 03 апреля 2012

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

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

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

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

...