Это моя проблема.У меня есть 1 и только 1 веб-сайт для нескольких клиентов.Чтобы получить доступ к своим данным, клиенты используют такие URL-адреса: http://customer1.mysite.com http://customer2.mysite.com и т. Д.
Каждый клиент имеет экземпляр SqlServer со своими данными.
Зависит от URL-адреса веб-сайтаподключиться к нужному экземпляру сервера sql.Это хорошо.
Моя проблема касается членства, у каждого экземпляра есть своя «база данных членства».В моем webconfig я настраиваю фиктивный раздел следующим образом:
<membership defaultProvider="MyMembershipProvider">
<providers>
<clear />
<add name="MyMembershipProvider"
type="MapApp.MyMembershipProvider, MyApp"
enablePasswordRetrieval="true"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Encrypted"
minRequiredPasswordLength="5"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression=""
connectionStringName="A_DATABASE" />
</providers>
</membership>
Также у меня есть пользовательский член Membershipprovider с таким кодом:
public class MyMembershipProvider : SqlMembershipProvider
{
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
{
base.Initialize(name, config);
// Update the private connection string field in the base class.
string connectionString = "my new connection string depdend of the customer"
// Set private property of Membership provider.
FieldInfo connectionStringField = GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic);
connectionStringField.SetValue(this, connectionString);
}
}
, но этого недостаточно, чтобы возникли некоторые проблемы, например "«Я уже звонил своему провайдеру членства».
Кто-нибудь может мне помочь?Пожалуйста ...
Извините за мой плохой английский в этом длинном посте