0

我正在开发一个 Web 应用程序,由于要求,我不想将连接字符串存储在 Web 或应用程序配置中。

到目前为止,我找到了实现这一目标的唯一方法 - 覆盖成员资格和角色提供者。

我也不完全理解为什么当所有身份验证都由会员提供者处理时,我还必须覆盖角色提供者?

谢谢

4

2 回答 2

1

虽然 SqlRoleProvider 和 SqlMembershipProvider 是不同的关注点,但它们都与同一个数据库通信(通常)。

它们每个都有一个不同的配置部分,并且需要一个连接字符串的实例。

我同意你在另一个问题上发现的策略,如果你想使用角色,你必须做同样的事情,在代码中配置,就像你为会员做的那样。

您应该链接到另一个问题以提供上下文并防止被标记为重复。

于 2010-07-26T09:50:34.890 回答
0

我在网上找到了一个解决方案,这有点小技巧,但让我免于覆盖成员资格和角色提供者。

解决方法是通过反射在global.asax中设置一个连接字符串:

protected void Application_PreRequestHandlerExecute()
{
    try
    {
        SetProviderConnectionString(DllForConnectionStringManagement.GetConnectionString());
    }
    catch (Exception e)
    {
    // Log and throw
    }
}

SetProviderCONnectionString 是一个私有方法,它通过反射设置成员和角色提供者的连接。

于 2010-07-26T12:19:20.220 回答