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