6

我需要知道在用户仍然连接到它的情况下部署新版本的 ASP.NET MVC 应用程序的最佳实践

每次部署包含应用程序模型和控制器的 .dll 时,应用程序都会重新启动。部署 web.config(最终引用新库)也会导致重新启动应用程序。

所以,问题是:如何在不断开用户与站点的连接的情况下更新应用程序的 dll 或 web.config?

4

2 回答 2

1

您希望使用除 in-proc 之外的另一个会话状态选项,以便您的用户在进程回收或系统重新启动时存活。

InProc:In-Proc 模式将值存储在 ASP.NET 工作进程的内存中。因此,此模式提供了对这些值的最快访问。但是,当 ASP.NET 工作进程回收时,状态数据会丢失。

有关更多 ASP.NET 选项和其他第三方会话状态提供程序的提及,请参阅ASP.NET 会话状态选项。

此问题还涉及可能的部署方案,以帮助处理池回收后网站负载不足和应用程序时间变慢:人们如何解决大型应用程序部署时的应用程序池回收问题?

理想情况下,您希望尽可能无状态,并远离会话。例如,也许您可​​以使用 cookie 通过表单身份验证来跟踪当前用户。但是您必须通过使用分布式缓存/会话提供程序远离进程内,这样用户就不会在应用程序池回收时丢失会话状态。

于 2013-12-19T00:47:19.380 回答
1

我认为最好的方法是为新会话部署一个新站点,并在旧会话中保留现有会话。

我觉得下面链接的“蓝绿色部署策略”文章可以通过一些更改来实现(禁止新连接而不是发出“流失”,使用粘性会话)。

https://kevinareed.com/2015/11/07/how-to-deploy-anything-in-iis-with-zero-downtime-on-a-single-server/

于 2016-11-16T05:33:06.447 回答