IIS 8发布ASP.NET核心应用程序 - 正在使用的文件

时间:2016-10-11 07:47:36

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

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

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

我不介意IIS必须回收应用程序池,但是当我经常不得不放下应用程序,发布(大约需要一分钟)并重新启动它时,它并不适合用户。

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

第三个选项类似于热更新,我可以在应用程序启动时更新它。

任何人都可以指出我正确的方向(也许是一些博客文章),因为我的谷歌搜索没有给我任何好的信息吗?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

您提及"运行相同应用程序的两个网站"。你的意思是两个托管相同应用程序的Web服务器?

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

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

相关问题