我正在开发一个 Web 应用程序,由于要求,我不想将连接字符串存储在 Web 或应用程序配置中。
到目前为止,我找到了实现这一目标的唯一方法 - 覆盖成员资格和角色提供者。
我也不完全理解为什么当所有身份验证都由会员提供者处理时,我还必须覆盖角色提供者?
谢谢
我正在开发一个 Web 应用程序,由于要求,我不想将连接字符串存储在 Web 或应用程序配置中。
到目前为止,我找到了实现这一目标的唯一方法 - 覆盖成员资格和角色提供者。
我也不完全理解为什么当所有身份验证都由会员提供者处理时,我还必须覆盖角色提供者?
谢谢
虽然 SqlRoleProvider 和 SqlMembershipProvider 是不同的关注点,但它们都与同一个数据库通信(通常)。
它们每个都有一个不同的配置部分,并且需要一个连接字符串的实例。
我同意你在另一个问题上发现的策略,如果你想使用角色,你必须做同样的事情,在代码中配置,就像你为会员做的那样。
您应该链接到另一个问题以提供上下文并防止被标记为重复。
我在网上找到了一个解决方案,这有点小技巧,但让我免于覆盖成员资格和角色提供者。
解决方法是通过反射在global.asax中设置一个连接字符串:
protected void Application_PreRequestHandlerExecute()
{
try
{
SetProviderConnectionString(DllForConnectionStringManagement.GetConnectionString());
}
catch (Exception e)
{
// Log and throw
}
}
SetProviderCONnectionString 是一个私有方法,它通过反射设置成员和角色提供者的连接。