繁体   English   中英

发布新版本的ASP.NET网站-最佳做法

[英]Release new version of ASP.NET website - Best Practices

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

我担心当前正在使用该应用程序的用户。 如果我推送新版本,会否将它们赶出去? IIS如何处理打开的会话?

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

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

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

  1. 查看您的日志,并在流量最小时进行计算。

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

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

  4. 部署您的更改。

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

  6. 请求您的主页,并希望它能起作用。

我倾向于遵循以下思路:

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

除了可能的IIS设置更新之外,这通常对我来说效果最好。 它使您有机会在重新上线之前测试应用程序。

Stack Overflow Podcast#63中, Jeff Atwood提到了Stack Overflow如何处理此问题。 他说了些什么,他们可以确切知道什么时候是高峰时间,该站点基本上会离线几秒钟,然后重新启动。

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

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

提出了两种选择:

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

  2. 为了使停机时间尽可能短,我将在生产服务器上创建一个新虚拟目录,并带有一个类似于test.example.com的子站点,当该目录正常工作时,我将www.example.com虚拟目录文件路径更改为指向到新目录,然后删除test.example.com。 如果您使用某种不依赖cookie或RESTful的状态,则某些用户将在重新启动应用程序池时释放其状态。 在进行此操作之前,请务必先宣布,以便为用户做好准备,正如其他人指出的那样,最好在流量尽可能小的情况下执行此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM