ASP.NET应用程序日间发布

时间:2009-10-09 14:39:39

标签: asp.net

我们拥有一个拥有约300名用户的Intranet,他们在白天积极使用它。我们需要能够在白天发布应用程序的预编译版本,因为用户通常会向我们提供不正确的要求,然后当天需要它。目前,我们发布了一个非预编译版本,让Web服务器编译单独的代码隐藏页面。问题是,当我们发布像App_Code这样的东西时,它会成为服务器的大风格。

是否有可能在白天发布DLL而不会搞砸某人在网页上的操作?

4 个答案:

答案 0 :(得分:2)

我不同意第二台服务器只需要很小的停机时间。当然,如果你想要没有停机时间你需要第二台服务器,但是......

导致大停机的原因+你可能遇到的任何问题都是你在那里的任何东西,取决于应用程序没有重新启动。当您更改AFAIK时,您无法阻止它重新启动,但您可以避免导致用户额外停机或错误的辅助效果。

考虑:

  • 不使用进程内会话或使用 以这种方式,几乎如果不是全部 您的网站不依赖于 那里的东西,如果你加载 一些你可以重装的东西,你可以 之后这样做
  • 避免在启动时出现导致应用程序负载过重的内容 即静态加载/或其他东西 在application_start
  • 上加载
  • 有一个固定的机器密钥,因为如果不是它会随着应用程序重启而改变,所有类型的东西都会变得无效,即auth令牌,viewstate等等。

更新1:请注意,您必须执行的操作可将“停机时间”减少到秒,与使用2台服务器时相同和/或相关。

所以,为此,我会首先这样做,如果你在评论中所说的不是夸大其词而且每分钟(比如说3个20秒的部署)将会失去你的体重,我会添加第二个服务器

请注意,让应用程序离线花费数百英镑的原因可能不仅仅是停机时间,而是所有丢失的会话,提交的表单(查看状态),身份验证无效等等...阅读本文 - 取决于如何处理这些内容,只是让用户在提交内容时等待时间更长......如果没有通过,他们可以重新提交并且会通过。

答案 1 :(得分:2)

我将打破“获得第二台机器”的情绪,但我也会提供一个狡猾的选择。

您始终可以在同一台计算机上设置两次网站。为机器分配2个IP地址,然后为每个网站分配一个IP地址。最后在这两个网站上设置负载平衡。这应该允许您将用户首先指向一个站点,然后指向另一个站点。我没有对此进行测试,但我想不出它不起作用的原因。

答案 2 :(得分:1)

您是否拥有多台托管该网站的服务器?如果是这样,您可以取下一个,更新它,然后将其重新联机。取下第二个,更新等。

或者,如果你只有一个,如果这个过程只需要几分钟,那就应该发布一个app_offline.htm文件说“该网站将在2分钟后回来”。

答案 3 :(得分:0)

在您所描述的单一服务器环境中,然后是nope。您将不得不等到一天结束才能进行部署。 使用此特定方案来说服您组织的权力,需要第二台服务器来进行中期更新,并帮助减少停机时间。