【问题标题】:IIS 8 publish ASP.NET core application - file in useIIS 8 发布 ASP.NET 核心应用程序 - 正在使用的文件
【发布时间】:2016-10-11 07:47:35
【问题描述】:

是否可以在 IIS 8 上将 ASP.NET(核心)应用程序发布到正在运行的站点,而无需手动停止和启动网站?

Visual Studio 2015 不断给出文件正在使用中的错误。我正在使用发布到文件系统,因为我的 Web 部署到我们网络中的服务器最后失败,并出现错误,它无法在端口 443 的服务器上进行身份验证。

我不介意 IIS 必须回收应用程序池,但是当我经常不得不关闭应用程序、发布(大约需要一分钟)并重新启动它时,这对用户来说并不是很好。

另一种选择是运行同一个应用程序的 2 个网站,但前提是这是可自动化的。然后它会放下 2 个中的 1 个,更新这个,穿上它,放下第二个,更新这个并启动它。

第三种选择类似于热更新,我可以在应用程序启动时对其进行更新。

谁能指出我正确的方向(也许是一些博客文章),因为我的 Google 搜索没有给我任何好的信息?

【问题讨论】:

    标签: asp.net iis asp.net-core updates iis-8


    【解决方案1】:

    如果您将名为 app_offline.htm 的文件复制到应用程序文件夹,IIS 将正常停止您的应用程序并开始提供 app_offline.htm 文件的内容。当应用程序停止时,您可以复制您的文件。复制文件后,删除 app_offline.htm 文件,IIS 将启动您的应用程序。 VS 会在您部署到 Azure 时为您执行此操作,但在部署到文件系统时不会。

    【讨论】:

    【解决方案2】:

    您提到“两个网站运行相同的应用程序”。您是指托管同一个应用程序的两个 Web 服务器吗?

    如果您已经有多个网络服务器(也称为服务器集群或网络农场),您可以简单地将一些服务器从集群中取出并更新它们。这就是我们推出更新的方式。我们使用 Citrix 的软件来管理服务器场。它还处理负载平衡。这种类型的软件允许监视服务器,因此您可以确定所有用户何时“移出”Web 服务器(最近从集群中取出)。然后,您可以 iisreset、部署新的构建,然后移动到下一个服务器(或一组服务器,具体取决于您的配置)。我们有 20 多个虚拟 Web 服务器。通常我们会关闭一半的服务器,更新它们,然后将另一半关闭,因为我们将前半部分放回集群/场中。这应该允许不间断的服务。我了解您想要自动化该过程。我假设您使用的是 Windows NLB(网络负载平衡)。您可以编写一个 PowerShell 脚本来自动关闭服务器。这是一个参考: https://technet.microsoft.com/en-us/library/ee817138

    我知道这可能被视为一种解决方法。我不确定 ASP.NET Core 是否总是需要回收应用程序池。我没能找到明确的答案。无论如何,大多数生产应用程序都应该在不止一台 Web 服务器上。即使您没有很多用户,也应该有多个 Web 服务器用于故障转移。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-26
      • 2021-02-15
      • 2021-10-25
      • 2019-08-01
      • 1970-01-01
      • 2018-04-03
      • 2019-12-22
      相关资源
      最近更新 更多