C# 重新初始化成员资格提供程序ASP.NET

C# 重新初始化成员资格提供程序ASP.NET,c#,asp.net,active-directory,membership-provider,activedirectorymembership,C#,Asp.net,Active Directory,Membership Provider,Activedirectorymembership,我有一个ActiveDirectoryMembershipProvider和一个SQLMembershipProvider(本质上,它是一个ASP.Net应用程序,为应用程序生成的用户和来自active directory的用户都可以登录)。我想设置登录控制器,以便当本地用户登录时,如果广告提供商无法与广告服务器对话,则当其他用户尝试登录时,它将重新初始化ADProvider 据我所知,当调用任何一个提供者时,应用程序都会初始化这两个提供者。ADProvider尝试连接,如果无法连接,则抛出错误

我有一个ActiveDirectoryMembershipProvider和一个SQLMembershipProvider(本质上,它是一个ASP.Net应用程序,为应用程序生成的用户和来自active directory的用户都可以登录)。我想设置登录控制器,以便当本地用户登录时,如果广告提供商无法与广告服务器对话,则当其他用户尝试登录时,它将重新初始化ADProvider

据我所知,当调用任何一个提供者时,应用程序都会初始化这两个提供者。ADProvider尝试连接,如果无法连接,则抛出错误。 我当前捕捉到错误并默默地放弃。本地用户可以登录,但当我重新启动我的广告服务器时,我似乎找不到让ADProvider尝试重新连接的方法。我尝试再次调用initialize(),但它抛出了一个“已初始化”错误


如果我需要创建自己的,很好,我希望有一些配置或简单的方法是我缺少的。

我终于想出了在这种情况下该怎么做:

    //create our own AD Provider
    private System.Web.Security.ActiveDirectoryMembershipProvider base_provider;

    private bool initialised = false;

    //these values are saved when Init if first called by the Membership Collection. 
    //So that I can pass them back into the new base_provider when it is made.
    private string name = null;
    private System.Collections.Specialized.NameValueCollection config;
    private Exception init_exception;

    public override void Initialize(string name, System.Collections.Specialized.NameValueCollection config)
    {
        this.name = name;
        this.config = config;

        try
        {
            base_provider = new System.Web.Security.ActiveDirectoryMembershipProvider();

            base_provider.Initialize(name, config);
            initialised = true;
        }
        catch (Exception e)
        {
            this.base_provider = null;
            init_exception = e;
        }
    }

    public override System.Web.Security.MembershipUserCollection GetAllUsers(int pageIndex, int pageSize, out int totalRecords)
    {
        if (!initialised) this.Initialize(this.name, this.config);

        //just a custom exception that my Membership object (that handles calling the two providers) picks up on
        if (base_provider == null) throw new NotInitialisedException(this.init_exception.Message);

        return base_provider.GetAllUsers(pageIndex, pageSize, out totalRecords);
    }

    ....
然后对于我不想实现的任何方法(例如,我不想更改AD服务器上的任何数据,只想列出并验证用户),我只有一个NotImplementedException