Membership API - нестандартная строка подключения

t0rch
Дата: 02.04.2010 17:00:55
Доброго времени суток, уважаемые!
Вопрос - хотим использовать Membership API, но не хотим хранить строку подключения в web.config. А он, насколько я понимаю, при использовании требует хранить подключение именно там.
Есть ли какие-нибудь другие варианты хранения строки подключения для Membership API?
Спасибо.
Зритель с попкорном 5
Дата: 02.04.2010 17:07:19
t0rch,

можно хранить строку подключения там где ей положено быть, а саму секцию connectionStrings из web.config шифровать встроенными средствами ASP.NET
МСУ
Дата: 02.04.2010 17:21:37
Напишите свой провайдер:

public class MyMembershipProvider : SqlMembershipProvider
{
    public override void Initialize(string name, NameValueCollection config)
    {
        base.Initialize(name, config);
        string connectionString = "...";
        FieldInfo filed = GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic);
        filed.SetValue(this, connectionString);
    }
}

<membership defaultProvider="MyMembershipProvider">
  <providers>
    <clear />
    <add name="MyMembershipProvider"
	type="MyNamespace.MyMembershipProvider, MyAssembly" ... />
  </providers>
</membership>
t0rch
Дата: 07.04.2010 16:18:55
МСУ, в Вашем примере кода, переопределяется строка подключения, но, как я понял, это не исключает хранения какой-либо строки подключения в web.config, т.к. SqlMembershipProvider в методе Initialize работает со строкой подключения указанной в web.config.
Я не хочу указывать в web.config никаких строк подключения.
Получается Membership API это исключительно web-based решение?
E209
Дата: 07.04.2010 16:24:12
t0rch,

А в чем критичность хранения в web.config если вы свой провайдер реализуете? Не хотите имя и пароль подключения хранить - не храните.
МСУ
Дата: 07.04.2010 16:31:19
t0rch
МСУ, в Вашем примере кода, переопределяется строка подключения, но, как я понял, это не исключает хранения какой-либо строки подключения в web.config, т.к. SqlMembershipProvider в методе Initialize работает со строкой подключения указанной в web.config.

Чё? Какой web.config?

Где тут

FieldInfo filed = GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic);

web.config?

t0rch
Я не хочу указывать в web.config никаких строк подключения.

А я что написал?

t0rch
Получается Membership API это исключительно web-based решение?

А по-русски?
t0rch
Дата: 07.04.2010 17:23:21
МСУ
Где тут

FieldInfo filed = GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic);

web.config?


Тут никакого web.config нет. В Вашем коде переопределение идет уже после того как базовый метод считал ее из web.config. И не просто считал, а по переданному имени проверил ее там физическое наличие. Вот здесь:

МСУ

base.Initialize(name, config);
МСУ
Дата: 07.04.2010 17:36:46
t0rch, какая разница, что там провайдер в базовом Initialize делает, если Вы сами жестко определяете строку подключения в овверайде?
t0rch
Дата: 07.04.2010 17:48:23
Только в том, что в web.config все равно придется указывать какую-то левую строку подключения, чтобы скормить ее базовому Initialize.
МСУ
Дата: 07.04.2010 17:50:28
t0rch
Только в том, что в web.config все равно придется указывать какую-то левую строку подключения, чтобы скормить ее базовому Initialize.

Зачем что-то указывать в web.config?
P.S. Уаажаемый, может хватит сказки тут выдумывать? Может, возьмете, наконец, и протестируете код?