如何在不丢失会话的情况下更新asp net webforms或mvc应用程序?

one*_*end 6 c# asp.net asp.net-mvc session webforms

这是我的情景.我在Windows Server 2012上的iis 8上发布我的webforms或mvc应用程序.然后我的客户请求别的东西,我必须更新代码隐藏.

例如,表单上的新输入或db上的新列.我正在使用会话变量进行会员或购物车流程.

当我在服务器中复制新的bin文件时(当我发布我的应用程序时),会话终止.如何解决此更新问题?我该怎么办才能保持会话活着?因为游客正在失去他们的购物车.

感谢帮助.

Nik*_*nte 5

有多种情况会导致 IIS 删除会话:

  • 许多文件会更新,ASP.NET 会主动为您重新编译。
  • 会话自然超时
  • 更新 web.config 这会导致它回收
  • 网站应用程序池回收还有另一个原因

听起来你好像遇到了第一个问题,而且没有办法阻止这种行为。

听起来您正在使用“处理中”会话,这是默认设置,这就是您丢失篮子等的原因。

来自MSDN

InProc 模式,将会话状态存储在 Web 服务器的内存中。这是默认设置。

其他选项是:

StateServer 模式,它将会话状态存储在称为 ASP.NET 状态服务的单独进程中。这可以确保在重新启动 Web 应用程序时保留会话状态,并且还可以使会话状态可供 Web 场中的多个 Web 服务器使用。

SQLServer 模式将会话状态存储在 SQL Server 数据库中。这可以确保在重新启动 Web 应用程序时保留会话状态,并且还可以使会话状态可供 Web 场中的多个 Web 服务器使用。

自定义模式,使您能够指定自定义存储提供程序。

将会话切换到任何其他会话都可以让您进行更新,但迁移不是即时的。