零停机时间asp.net部署和会话状态问题

时间:2012-10-16 10:52:34

标签: asp.net deployment session-state

在工作中,我们有一个相当好的流程,用于繁忙的ASP.NET MVC网站的零停机部署。有两个服务器组,所以我们可以移动流量,我们写db SP是向后兼容的并提前推出它们。一般来说,它运作良好。

但是,有一个问题让我失望了。最后一次部署包括许多代码名称空间更改。

部署构建时,它会破坏现有的用户会话,因为处于会话状态的对象不再存在于新代码库中,例如他们的会话包含App_Code.UserDetails,该网站现在有一个X.Y.Z.UserDetails类

我理解这个问题以及它为什么会发生,但我无法解决的问题是,除了完整的网站关闭之外还有什么可以做的,以确保网站上没有活跃的用户。或者可能重新启动状态服务,以便每个人都被启动并且必须再次登录。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在考虑过这个问题后,我得出了两个可能的解决方案:

a)始终使用停机时间部署网站更新。使网站保持足够长的时间以使所有会话过期。这在技术上是一种安全的选择,但在商业上是不可接受的

b)模拟问题并查看可以在异常处理程序中解决问题的方法。虽然不是理想的最终用户体验,但最好在会话状态上捕获SerializationExceptions,并刷新用户会话。他们将不得不再次进行身份验证,但这并不像破坏会话那么糟糕。

我提前做出的一个决定是,在开发过程中很难掌握实时会话依赖关系,还有太多其他事情需要考虑。

我将调查(b),因为这听起来很可行。

相关问题