gpt4 book ai didi

asp.net - 在网站上线时重新发布 ASP.NET Web 应用程序

转载 作者:行者123 更新时间:2023-12-02 15:29:35 25 4
gpt4 key购买 nike

我试图掌握如何在网站上有用户时处理实时运行的 ASP.NET(2.0 或更高版本)应用程序的更新。

例如,假设 SO 是一个 ASP.NET Web 应用程序项目。项目代码编译为 BIN 文件夹中的单个 .DLL。现在,SO 上不断有用户,那么如果您在用户使用该网站时使用 Visual Studio .NET“发布”功能(或只是再次手动传输所有内容),用户的操作/ session 会发生什么情况?

相反,创建 ASP.NET 网站是否可以缓解上述方案中可能存在或不存在的任何问题?我开始开发一个网站作为用户驱动的 Web 应用程序,我想确保我对此的缺乏经验不会潜在地惹恼我[想要]拥有 24/7 的[潜在]许多用户。

编辑:抱歉,我应该把它放在更准确的上下文中。假设该网站由按月付费的网络托管服务托管。我不会管理服务器本身,而只是管理网络主机作为其服务的用户所允许的内容。

最佳答案

我在 IIS 中创建了两个网站。一个是生产网站,另一个是带有 HttpHandler 的静态网站,该 HttpHandler 将所有请求发送到单个静态“我们正在更新”HTML 页面,该页面由 HTTP 503 服务不可用提供服务。通常更新网站是关闭的。当需要更新时,我们停止生产网站,启动更新网站,现在我们可以随心所欲地摆弄生产网站,而不必担心 DLL 被锁定或工作进程需要停止运行。

我开始这样做是因为

  • App_Offline.htm 在我们使用的网络花园中确实无法正常工作。
  • App_Offline.htm 将其页面设为 404,如果您长时间处于停机状态,这会很糟糕。
  • 我们可以使用修改后的设置启动升级后的生产网站(仅在本地主机上监听),在打开开关、关闭更新网站并重新启动之前,我们可以在最后一刻接受/验证一切正常。 -启用生产网站。

这不能解决的问题包括

  • 任何需要重新启动服务器的维护 - 您仍然会遇到不提供页面的停机时间。
  • 任何欺骗 .NET 运行时的维护,例如升级到最新的服务包。

我见过的其他方法包括

  • 拥有两台服务器。将所有负载均衡请求发送到一台服务器,升级另一台服务器;然后冲洗并重复。我们大多数人都没有这种奢侈。
  • 创建多个 bin 目录,例如 bin-1.0.0.0 和 bin-1.1.0.0,并告诉 ASP.NET 在 web.config 文件中使用哪个 bin 目录。 (这样做的一个优点是恢复到以前的二进制文件只需编辑一个配置文件。缺点是很难恢复未出现在二进制文件中的资源,例如模板和图像等。)我不这样做记住这实际上是如何工作的——我认为应用程序根据自己的 web.config 部分在其 Global.asax 中进行了一些后期程序集加载(自从您触摸 web.config 后,应用程序已重新启动,所以没问题)。

如果您找到更好的方法,请告诉我!

关于asp.net - 在网站上线时重新发布 ASP.NET Web 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/646055/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com