ASP.NET部署:如何避免在更新代码时丢失会话状态?

时间:2010-01-08 20:34:52

标签: asp.net deployment compilation

如何处理每次将某些代码文件部署到ASP.NET网站时删除会话的事实?有时我们需要在一天中间部署一个关键的修复程序,但不想为所有用户启动它。

3 个答案:

答案 0 :(得分:7)

默认情况下会话存储InProc。您应该选择out-of-process option

在您的方案中可能只有StateServer就足够了

答案 1 :(得分:1)

一种方法是设置负载平衡的服务器。您可以将所有流量定向到服务器A,修补服务器B,然后以相反的方式重复。

或者,正如@Curtisk所说,最好是通过严格的测试进入你不需要做“热补丁”的阶段,然后进行预先公布的计划中断。

希望这有帮助。

答案 2 :(得分:1)

发生这种情况的原因是部署新代码会导致应用程序池被回收。然后你失去了你在记忆中的一切。

解决这个问题的方法是不要在内存中保存任何内容。

这有多难取决于您的架构。

一种解决方案是使用进程外状态将会话信息保存在SQL Server中。注意不要使用内存状态服务器,就好像应用程序池被回收一样,你将失去它。