首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展的SqlProfileProvider,如何调用我的自定义方法?

扩展的SqlProfileProvider,如何调用我的自定义方法?
EN

Stack Overflow用户
提问于 2013-02-14 17:25:35
回答 1查看 302关注 0票数 0

我使用MySqlProfileProvider,它扩展了SqlProfileProvider类。在我的类中,为了更改基的连接字符串,我将重写Initialize。一切都很好。

我的问题是,我需要在配置文件提供程序初始化后调用以更改连接字符串(当它初始化时,我没有创建正确连接字符串所需的信息),而且我似乎无法访问该方法。

它在我的自定义SqlMembershipProvider类中工作,以便调用我调用的函数。

代码语言:javascript
复制
((MySqlMembershipProvider)Membership.Providers).ChangeConnectionString(sRequiredData);

全班:

代码语言:javascript
复制
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);
        }
    }
}

我的配置文件提供程序中有相同的方法,但是我找不到如何调用它。我试过在ProfileBaseProfileProviderProfile中访问它,但没有运气,而且谷歌上似乎没有人能找到这个解决方案。

编辑

我在找看上去像

代码语言:javascript
复制
((MySqlProfileProvider)Profile.Provider).ChangeConnectionString(sRequiredData);

但不幸的是,您无法通过配置文件访问Provider

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-15 14:00:03

我通过反复试验找到了解决方案:

代码语言:javascript
复制
((MySqlProfileProvider)ProfileBase.Properties["ANY_PROFILE_PROPERTY"].Provider).ChangeConnectionString(sRequiredData);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14880548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档