发布我的 asp.net 应用程序的新版本的最佳实践是什么?
我担心当前使用该应用程序的用户。如果我推送一个新版本,它会踢出他们吗?IIS 如何处理打开的会话?
我正在寻找一种在不影响用户的情况下推送新版本的简单方法。
发布我的 asp.net 应用程序的新版本的最佳实践是什么?
我担心当前使用该应用程序的用户。如果我推送一个新版本,它会踢出他们吗?IIS 如何处理打开的会话?
我正在寻找一种在不影响用户的情况下推送新版本的简单方法。
我假设您没有具有多个 Web 服务器的负载平衡环境?
在这种情况下,您可以做的最好的事情可能是:
查看您的日志,并找出流量最少的时间。
假设您有一个站点范围的母版页,请修改 .master 以显示一条消息,警告人们将在特定时间段内进行站点维护。如果您不使用母版页,请在您的主页和其他高流量页面上添加消息。
在指定时间将app_offline.html文件拖放到您网站的根目录中。
部署您的更改。
从根目录中删除 app_offline.html 文件。
请求您的主页,并希望它有效。
我倾向于遵循以下原则:
除了潜在的 IIS 设置更新之外,这往往对我来说效果最好。它使您有机会在切换回现场之前测试应用程序。
在Stack Overflow Podcast #63中,Jeff Atwood 提到了 Stack Overflow 如何处理这个问题。他说他们确切地知道低高峰时间是什么时候,网站基本上会离线几秒钟,然后再恢复。
如果您正在使用 Web 应用程序模型,则放入新的 DLL 将导致应用程序重新启动,因此任何正在运行的操作都将被中断,会话数据和缓存将过期。Cookie 将保持不变,因此用户将保持登录状态。
警告或通知您的用户有关更新(当您进行更新时,只需将简单的文本放在网站的标题中)。在进行更新时,请确保将应用程序置于离线状态,只需将 app_offline.htm 文件放在根文件夹即可。然后进行更新并删除 app_offline.htm 以使您的网络恢复在线。
提出了两种选择:
有一个不为人知的忍者技巧,那就是拥有两个生产环境,当新环境启动并运行时,将您的 DNS 服务器更改为指向新环境,这样人们就不会失去他们的状态和当他们的 DNS 缓存更新时,通常会在一天内使用新站点。一天后,将第二个(旧)生产环境下线应该是安全的,当需要再次升级时,可以再次切换到该环境。
为了使停机时间尽可能短,我会在生产服务器上创建一个新的虚拟目录,其中包含一个像 test.example.com 这样的子站点,当它在那里工作时,我会更改 www.example.com 虚拟目录文件路径指向到新目录,然后删除 test.example.com。如果您使用某种不依赖于 cookie 或 RESTful 的状态,一些用户将在应用程序池重新启动时失去其状态。务必在执行此操作之前宣布,以便用户做好准备,正如其他人指出的那样,最好在流量尽可能低时执行此操作。