5

发布我的 asp.net 应用程序的新版本的最佳实践是什么?

我担心当前使用该应用程序的用户。如果我推送一个新版本,它会踢出他们吗?IIS 如何处理打开的会话?

我正在寻找一种在不影响用户的情况下推送新版本的简单方法。

4

6 回答 6

5

我假设您没有具有多个 Web 服务器的负载平衡环境?

在这种情况下,您可以做的最好的事情可能是:

  1. 查看您的日志,并找出流量最少的时间。

  2. 假设您有一个站点范围的母版页,请修改 .master 以显示一条消息,警告人们将在特定时间段内进行站点维护。如果您不使用母版页,请在您的主页和其他高流量页面上添加消息。

  3. 在指定时间将app_offline.html文件拖放到您网站的根目录中。

  4. 部署您的更改。

  5. 从根目录中删除 app_offline.html 文件。

  6. 请求您的主页,并希望它有效。

于 2009-09-12T10:02:48.420 回答
1

我倾向于遵循以下原则:

  1. 为更新的应用程序创建一个新目录(wwwroot/myAppV1/、wwwroot/myAppV2/ 等...)
  2. 在主应用程序下设置一个新的虚拟目录以指向新应用程序(如果您有安全意识,请使用虚拟目录的 guid)
  3. 通过虚拟目录测试应用程序
  4. 将 app_offline.htm 文件添加到当前工作的应用程序
  5. 当您满意时,将 IIS 中的网站目录重新指向新目录

除了潜在的 IIS 设置更新之外,这往往对我来说效果最好。它使您有机会在切换回现场之前测试应用程序。

于 2010-04-29T18:48:18.347 回答
0

Stack Overflow Podcast #63中,Jeff Atwood 提到了 Stack Overflow 如何处理这个问题。他说他们确切地知道低高峰时间是什么时候,网站基本上会离线几秒钟,然后再恢复。

于 2009-09-12T09:59:21.287 回答
0

如果您正在使用 Web 应用程序模型,则放入新的 DLL 将导致应用程序重新启动,因此任何正在运行的操作都将被中断,会话数据和缓存将过期。Cookie 将保持不变,因此用户将保持登录状态。

于 2009-09-12T10:04:53.687 回答
0

警告或通知您的用户有关更新(当您进行更新时,只需将简单的文本放在网站的标题中)。在进行更新时,请确保将应用程序置于离线状态,只需将 app_offline.htm 文件放在根文件夹即可。然后进行更新并删除 app_offline.htm 以使您的网络恢复在线。

于 2009-09-12T10:32:23.997 回答
0

提出了两种选择:

  1. 有一个不为人知的忍者技巧,那就是拥有两个生产环境,当新环境启动并运行时,将您的 DNS 服务器更改为指向新环境,这样人们就不会失去他们的状态和当他们的 DNS 缓存更新时,通常会在一天内使用新站点。一天后,将第二个(旧)生产环境下线应该是安全的,当需要再次升级时,可以再次切换到该环境。

  2. 为了使停机时间尽可能短,我会在生产服务器上创建一个新的虚拟目录,其中包含一个像 test.example.com 这样的子站点,当它在那里工作时,我会更改 www.example.com 虚拟目录文件路径指向到新目录,然后删除 test.example.com。如果您使用某种不依赖于 cookie 或 RESTful 的状态,一些用户将在应用程序池重新启动时失去其状态。务必在执行此操作之前宣布,以便用户做好准备,正如其他人指出的那样,最好在流量尽可能低时执行此操作。

于 2009-09-12T14:58:56.290 回答