我们已将ASP.NET应用程序的某些部分扩展为在一台服务器上运行,而其他部分则在另一台服务器上运行(并在子域下运行)。
两台服务器共享(SQL Server)会话。我们使用this MS article创建了一个微小的HTTP模块来同步两个服务器之间的应用程序域名(没有cookie域代码,可以在web.config中配置。我后来发现this CodeProject article本质上是{{3}}同样的。)
一切都运行良好,除了一个小问题:部署更改或web.config调整需要手动应用程序池回收(自动回收不再有效 - 相反,我们得到“Web服务器是当前不可用/点击刷新“错误”。
我尝试将应用域命名代码从HTTP模块移动到Global.asax的Application_Start部分(也许这是一个更好的地方吗?) - 但收到了同样的问题。
我知道一种解决方案是在其中一个SQL Server Session存储过程中对应用程序名称进行硬编码;但是这样做有点犹豫。
编辑:该应用程序是IIS 6.0下的ASP.NET 3.5(感谢@Chris& @bzlm)
答案 0 :(得分:0)
您应该检查IIS中是否启用了正确的回收事件,这可能会有所帮助http://support.microsoft.com/kb/332088
答案 1 :(得分:0)
更新。我们与微软就此开了一个技术支持案例。一个星期左右的后退&他们说他们已经在他们的环境中重现了这个问题,并了解了原因(ASP.NET内部深处的时间问题) - 但他们并没有意识到这一点。我抱怨HTTP模块是Microsoft代码,但是他们说这段代码是“快速发布”的术语 - 旨在帮助&建议客户;但没有保证。
好吧,好吧。我们现在只需在进行web.config更改后手动回收应用程序池。