我需要在数据库中维护会话状态。但是,我无法直接从Web服务器访问数据库。 Web服务器与应用服务器通信,后者又可以访问数据库。
有没有办法配置这个?或者是否必须编写自定义组件。
这种设置的原因是允许负载平衡并允许用户的会话从一个服务器重定向到另一个服务器。
答案 0 :(得分:4)
使用ASP.NET会话状态服务,您可以直接在应用服务器上运行此服务 - 请参阅MSDN上的说明here - 并配置所有Web主机以将其用户会话状态存储在该中央状态服务器上。 ASP.NET会话状态服务将会话存储在应用程序服务器的内存中,不需要SQL Server数据库。
答案 1 :(得分:3)
请注意,如果您认为需要在数据库中存储会话,因为您使用的是多个Web服务器,则情况并非如此:您可以使用StateServer。这意味着您在一台计算机上启用会话状态服务,并在所有Web服务器的web.config中设置该计算机,以便它们都使用同一台计算机进行状态。
答案 2 :(得分:2)
您唯一的选择是构建自定义组件。
它们真的不是那么难做,因为您需要的唯一事情是浏览器从cookie或查询字符串中向您发送值。存储的只是名称值对。
答案 3 :(得分:1)
您可以编写自定义SessionState提供程序..我认为这是唯一的方法..查看MSDN here。