我想知道是否可以根据运行应用程序的域来更改 ASP.net 中用于 SessionState 的 sqlConnectionString?
一个场景;我们有 20 个站点从一个应用程序运行,所有站点都与不同的数据库通信,具体取决于它们浏览的域(站点)。
当浏览 www.domain1.com 时,应用程序与数据库 'db1' 对话。另一方面,站点 www.domain2.com 与数据库“db2”等进行通信,从而选择相关内容并将负载分散到每个数据库,而不是使用一个主数据库来处理站点的所有连接。
但是出现了一个问题 - 对于此设置,我们对 SessionState 使用 SqlServer 模式,因此所有站点会话的所有用户都存储在 1 aspstate 数据库中,现在随着站点变得更忙/站点数量增加,该数据库的处理压力越来越大所有站点的所有会话请求,并且我们开始收到一些超时错误,其中与该数据库的连接出现瓶颈。
我们可以将站点从他们自己的应用程序中分离出来,并使用相同的代码设置不同的应用程序,但在每个应用程序中,在每个 Web.Config 中设置不同的 Session 数据库,从而减轻负载。但是,这项任务将非常耗时,并且从长远来看会导致更多的管理。所以..我很想知道是否可以在创建会话对象之前根据域在代码中修改用于 SessionState 的 sqlConnectionString?我们可以从 System.Web.HttpApplication 继承并使用 Application_AcquireRequestState 事件来创建所需的 HttpSessionState 对象设置吗?
希望这是有道理的,并且有人可以提供一些指示并向我证明这不是白日梦!
干杯,史蒂夫