0
나는 SqlProfileProvider
클래스를 확장하는 MySqlProfileProvider
을 사용하고 있습니다. 내 수업에서는베이스의 연결 문자열을 변경하기 위해 Initialize
을 재정의했습니다. 이 모든 것은 절대적으로 훌륭합니다.확장 된 SqlProfileProvider, 내 사용자 지정 메서드를 호출하려면 어떻게해야합니까?
내 문제는 프로필 문자열을 변경하기 위해 프로필 공급자를 초기화 한 후에 전화를 걸어야한다는 것입니다 (초기화 할 때 올바른 연결 문자열을 만드는 데 필요한 정보가 없을 때) 메서드에 액세스하는 것처럼 보입니다.
내가 전화를 함수를 호출하기 위해, 내 사용자 지정 SqlMembershipProvider
클래스에서 작동
((MySqlMembershipProvider)Membership.Providers).ChangeConnectionString(sRequiredData);
클래스 :
public class MySqlMembershipProvider : SqlMembershipProvider
{
public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config) {...}
public virtual void ChangeConnectionString(string sRequiredData)
{
// get db name
string sDATABASE_NAME = ManageDBs.GetCompanyDBName(sRequiredData);
// Set private property of Membership provider.
FieldInfo connectionStringField = GetType().BaseType.GetField("_sqlConnectionString", BindingFlags.Instance | BindingFlags.NonPublic);
string connectionString = connectionStringField.GetValue(this).ToString();
if (!connectionString.Contains(sDATABASE_NAME))
{
connectionString = connectionString.Replace("DATABASE_NAME", sDATABASE_NAME);
connectionStringField.SetValue(this, connectionString);
}
}
}
가 내 프로필 공급자에 같은 방법을 가지고 있지만 내가 찾을 수 없습니다 전화하는 법. 나는
ProfileBase
,
ProfileProvider
및
Profile
에 액세스하려고 시도했지만 해결책이있는 Google에는 아무도 없을 것 같습니다.
내가
((MySqlProfileProvider)Profile.Provider).ChangeConnectionString(sRequiredData);
에 가깝다 보이는 뭔가를 찾고 있어요하지만 불행히도 당신은 프로파일을 통해 Provider
에 액세스 할 수 없습니다
편집 할 수 있습니다.
((MySqlProfileProvider)ProfileBase.Properties["ANY_PROFILE_PROPERTY"].Provider).ChangeConnectionString(sRequiredData);
: