我需要让我的 SQLMembershipProvider 查看两个不同的数据库。我可以在第一个实例中以编程方式设置提供程序的连接字符串,但无法更改它以供后续使用。
有谁知道这是否可能,如果可以,怎么做?
谢谢!
public class CustomSqlMembershipProvider : SqlMembershipProvider
{
public static string connectionString { get; set; }
public override void Initialize(string name, NameValueCollection config)
{
DatabaseConfig _config = DatabaseConfig.GetInstance();
if (String.IsNullOrEmpty(connectionString))
connectionString = _config.BuildConnectionString(DatabaseConfig.enumConnectionString.MyRedsourceDev);
config["connectionString"] = connectionString;
base.Initialize(name, config);
//Also tried this but it doesn't work
// Set private property of Membership provider.
//FieldInfo connectionStringField = GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic);
//connectionStringField.SetValue(this, connectionString);
}
}
我不禁认为问题是因为 Initialize 方法只被调用一次 - 当用户登录时。据我所知,即使我设置了 connectionString,连接字符串在此之后也无法更改财产。
我注意到有一个名为“_Initialzed”的私有字段,我尝试使用上面相同的反射代码将其设置为false,希望每次都强制提供程序重新初始化,但无济于事