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

App*_*ons 6 asp.net iis updates iis-8 asp.net-core

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

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

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

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

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

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

小智 0

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

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

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