Перемещение настроек членства asp.net web.config в базу данных Возможно ли это? - PullRequest
5 голосов
/ 24 ноября 2011

Я надеюсь на плодотворный ответ на этот вопрос. Как мне перенести настройки, предоставленные в web.config для членства asp.net, в базу данных для кросс-настройки приложения. Например, информация о членстве включает ниже

  <providers>
    <add 
      name="OdbcProvider" 
      type="Samples.AspNet.Membership.OdbcMembershipProvider" 
      connectionStringName="OdbcServices"
      enablePasswordRetrieval="true"
      enablePasswordReset="true"
      requiresQuestionAndAnswer="true" 
      writeExceptionsToEventLog="true" />
  </providers>
</membership>

Extra

.NET 2.0

ASP.NET 2.0

1010 * Относящиеся * перемещение настроек членства asp.net в отдельный файл конфигурации

1 Ответ

4 голосов
/ 13 марта 2012

Да, вы можете!Мы сделали это успешно.

Вы можете сделать это несколькими способами, один из них - ввести любые свойства, которые вам нужны, в экземпляр поставщика (в этом примере предполагается, что вы используете SqlMembershipProvider, и показано, как вы можете это сделать)введите строку подключения, но вы можете взглянуть на источник OdbcMembershipProvider, чтобы понять, как это сделать самостоятельно):

public static void InjectConnectionStringIntoSqlMembershipProvider(SqlMembershipProvider provider, string connectionString) {
    Type t = typeof(SqlMembershipProvider);
    FieldInfo fi = t.GetField("_sqlConnectionString", BindingFlags.NonPublic | BindingFlags.Instance);
    if (fi == null) throw new InvalidOperationException("Invalid private identifier.");
    fi.SetValue(provider, connectionString);
}

Или вы можете создать своего собственного провайдера, создав класскоторый наследует MembershipProvider.

Или, как предлагает ссылка @Andomar, вы можете наследовать от любой реализации MembershipProvider (например, SqlMembershipProvider, среди прочих), чтобы получить то, что вы хотите.1013 *

Мы сделали все три года, в зависимости от того, сколько потребовалось для настройки.

...