У меня было приложение, которое сцепилось на 1 единую базу данных.
Приложение теперь должно сцепиться в несколько баз данных. То, что мы хотим сделать, использование того же dir приложения/домена/имени хоста/виртуального дает пользователю опцию на экране входа в систему для выбора "Приложения/Базы данных", в которое они хотят соединиться.
Каждая база данных имеет Приложение tables/data/procs/etc, а также aspnet материал членства/ролей.
Когда пользователь вводит имя пользователя и выбирает (список выборки) приложение, я хочу проверить пользователя против базы данных выбранных приложений.
В настоящее время строка соединения с базой данных для сервисов членства сохраняется в web.config. Есть ли какой-либо способ, которым я могу переопределить это во время входа в систему? Кроме того, мне нужно, "помнят меня" функция для работы гладко также. Как это работает, когда пользователь возвращается к приложению через 5 часов... Этот процесс должен смочь идентифицировать пользователя и приложение и войти в систему соответственно.
Единственный возможный способ - изменить строку подключения через отражение:
// Set private property of Membership provider.FieldInfo connectionStringField
= GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic);
connectionStringField.SetValue(this, connectionString);
Нашел здесь: http://forums.asp.net/p/997608/2209437.aspx
Почему бы просто не реализовать свой собственный membershipprovider? Это очень просто сделать, и тогда у вас будет полный контроль над происходящим. Я уверен, что вы придумаете другой пользовательский сценарий, с которым не будет хорошо работать стандартный провайдер.
AFAIK функция remember me должна работать именно так, как вы описываете, пока пользователь не удалит свои cookies.
Ниже - это ссылка на пример использования нескольких строк подключения для ваших поставщиков членства.