服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

负载平衡的IIS 7.5 Web服务器ASP.NET会话状态问题

我们遇到ASP.NET用户会话performanceexception的问题 – 会话数据出现,消失和重新出现。 我想我知道问题是什么: 我们的设置是2 x负载平衡WebServers +单一会话状态数据库。 ASP.NET SQL会话状态存储似乎依赖于IIS网站实例ID(元数据库ID)来唯一标识传入会话Cookie ID和检索/存储值。 每个活动服务器(Web服务器A上的ID / W3SVC / 1 / Root ,Web服务器B上的ID / W3SVC / 2 / Root)上的网站的IIS网站实例ID是不同的。 负载平衡不使用客户端关联,所以每个用户的HTTP请求可以到任一服务器。 因此,当用户login到站点并四处移动时,每个HTTP调用可以转到任一Web服务器,因此根据服务器使用具有不同ID的会话状态logging。 实际上,用户将同时拥有2个独立的会话实例。 我相信我已经validation了这一点,在数据库ASPStateTempSessions表中,每个会话Cookie ID似乎对应于2个几乎相同的命名logging(它们的ID仅相差最后几个字符,我相信它们是基于来自AspStateTempApplications表)创build在几秒钟内。 因此,会话状态将显得不当行为,因为对一个会话logging所做的更改只会对该Web服务器持续存在。 如果用户移动到其他负载平衡服务器,会话值似乎消失或恢复。 我相信解决scheme是同步网站的IIS实例ID(例如,使他们都/ W3SVC / 1 /根 ),但我试图编辑在高级设置下IIS的值,虽然它保存好,它只是使网站在该服务器上返回404s,直到我将其更改回来。 我发现这个问题的VBS脚本 ,但它似乎只用于IIS 6,所以我很担心尝试它。 有其他人在IIS 7.5上遇到这种情况,你是如何解决这个问题的? 编辑/解决scheme 我的错误是,我忘记在IIS中更改站点实例ID后重新启动IIS。 在此之后,ID被更新,ASP.NET会话在两个Web服务器上同步。 完整的说明: 远程桌面到服务器LIVE1上,打开IISpipe理器,点击问题网站,然后select侧边栏中的高级设置 。 将ID更改为唯一的例如10.单击确定。 重新启动Web服务( c:\windows\system32\iisreset /restart ) 为LIVE2做同样的事情(确保Site ID和LIVE1一样) […]