如何为不同用户管理多个连接

时间:2015-06-11 18:07:02

标签: asp.net database-connection asp.net-membership connection-string user-management

我正在为房地产代理商开发CMS解决方案。 所以不同的用户/组将使用相同的工具。

我创建了1个asp.net会员数据库,我管理所有用户。 用户分为不同的角色。(1个角色= 1个代理机构办公室)

然后 - 对于每个组我都有另一个数据库。在这个数据库中,我管理给定办公室的房地产和客户。 (这些数据库具有相同的结构。)

目前我正在使用"自定义ASP.NET Profile类"其中我存储特定数据库的connectionsstring。如果用户登录,我会创建此自定义配置文件。

现在我遇到了问题,如果匿名用户正在访问该页面(有一个公共部分),我会收到连接字符串错误,因为没有"自定义配置文件"我的函数可以读取连接字符串

我的自定义配置文件类看起来像:         公共类UserProfile         继承ProfileBase         公共共享函数GetUserProfile(用户名为字符串)作为UserProfile             返回TryCast(创建(用户名),UserProfile)         结束功能

    Public Shared Function GetUserProfile() As UserProfile
        Return TryCast(Create(Membership.GetUser().UserName), UserProfile)
    End Function

    <SettingsAllowAnonymous(False)> _
    Public Property role() As String
        Get
            Return TryCast(MyBase.Item("role"), String)
        End Get
        Set(value As String)
            MyBase.Item("role") = value
        End Set
    End Property


    <SettingsAllowAnonymous(False)> _
    Public Property UsersCustomConnectionString() As String
        Get
            Return TryCast(MyBase.Item("UsersCustomConnectionString"), String)
        End Get
        Set(value As String)
            MyBase.Item("UsersCustomConnectionString") = value
        End Set
    End Property


End Class

然后我可以读取我的连接字符串,如

Dim currentprofile As UserProfile = UserProfile.GetUserProfile() 
Dim strcon As String = currentprofile.UsersCustomConnectionString

我怎么能解决这个问题? 或者我应该用另一种方法来解决许多连接字符串&#34;问题 ?如果有,怎么样? (我认为会话varaiables赢了工作)

提前致谢

1 个答案:

答案 0 :(得分:0)

这就是我们所做的:在web.config中为

中的每个连接字符串添加一个条目
<appSettings> 

这样的部分:

<add key="connection_string_key" value="YourDBServerConnectionString"/>


然后从db访问类中读取值,如下所示:

System.Configuration.ConfigurationManager.AppSettings[connection_string_key]

如果你想动态地改变它们,可以在一些工厂类中读取它们,并根据当前用户的角色或者是否登录来返回正确的连接字符串。