我正在为房地产代理商开发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赢了工作)
提前致谢
答案 0 :(得分:0)
这就是我们所做的:在web.config中为
中的每个连接字符串添加一个条目<appSettings>
这样的部分:
<add key="connection_string_key" value="YourDBServerConnectionString"/>
然后从db访问类中读取值,如下所示:
System.Configuration.ConfigurationManager.AppSettings[connection_string_key]
如果你想动态地改变它们,可以在一些工厂类中读取它们,并根据当前用户的角色或者是否登录来返回正确的连接字符串。