没有connectionString的.Net RoleProvider

时间:2010-01-22 18:39:33

标签: asp.net-membership roleprovider

我想在我的应用程序中使用.Net的SqlMembershipProvider和SqlRoleProvider进行用户管理。我的问题是,当应用程序启动时,它不知道任何数据库连接信息。出于安全目的,它需要从数据库服务器上运行的WCF服务获取此信息。因此,我需要在事后建立我的会员/角色提供者。

我想我已经能够创建并添加会员提供者了:

// register membership provider
var membership = new SqlMembershipProvider();
var providerValues = new NameValueCollection();
providerValues.Add("name", "sqlMembershipProvider");
providerValues.Add("applicationName", "/");
providerValues.Add("connectionStringName", "connectionStrDynamAddedToConfig");
providerValues.Add("maxInvalidPasswordAttempts", "10");
membership.Initialize("sqlMembershipProvider", providerValues);
到目前为止,我还没有找到类似于创建RoleProvider的东西。我可以创建提供程序,但无法将其添加到角色管理器。我是否需要创建一个自定义提供程序,它可以在已经初始化后获取connectionString?

1 个答案:

答案 0 :(得分:0)

我跑过this page,建议“下载ProviderToolkitSamples并修改SQLConnectionHelper类。具体来说,GetConnectionString函数看起来像这样”

internal static string GetConnectionString(string specifiedConnectionString, bool lookupConnectionString, bool appLevel)
{
        if (specifiedConnectionString == null || specifiedConnectionString.Length < 1)
            return null;

        string connectionString = null;

        /////////////////////////////////////////
        // Step 1: Check <connectionStrings> config section for this connection string
        if (lookupConnectionString)
        {
            ConnectionStringSettings connObj = ConfigurationManager.ConnectionStrings[specifiedConnectionString];
            if (connObj != null)
                connectionString = connObj.ConnectionString;

            if (connectionString == null)
                return null;
        }
        else
        {
            connectionString = specifiedConnectionString;
        }

        return connectionString;
    }
}

来自williablog.net的文字,因为正如该页面所说,“链接有一种突破时间的方式”