是否可以将ASP.NET (核心)应用程序发布到IIS8上正在运行的站点,而不必手动停止和启动网站?
Visual Studio 2015一直显示文件正在使用中的错误。我使用发布到文件系统,因为我的Web部署到我们网络中的服务器最后失败,并出现错误,无法在端口为443的服务器上进行身份验证。
我不介意IIS回收应用程序池,但当我不得不不断地放下应用程序、发布应用程序(这需要大约一分钟)并重新启动它时,这对用户来说并不是真的很好。
另一种选择是运行相同应用程序的两个网站,但前提是这是自动化的。然后它会放下2个中的1个,更新这个,穿上它,放下第二个,更新这个,然后启动它。
第三种选择类似于热更新,我可以在应用程序运行时对其进行更新。
有人能给我指出正确的方向(也许是一些博客文章),因为我在谷歌上的搜索没有给我任何好的信息?
发布于 2017-01-12 22:06:38
如果将名为app_offline.htm的文件复制到应用程序文件夹中,IIS将正常停止应用程序并开始提供app_offline.htm文件的内容。当应用程序停止时,您可以复制文件。文件复制完成后,删除app_offline.htm文件,IIS将启动您的应用程序。当你部署到Azure而不是部署到文件系统时,VS会为你做到这一点。
发布于 2017-01-12 20:44:53
你提到“两个运行同一应用程序的网站”。你是说托管同一个应用程序的两个web服务器吗?
如果您已经有多个web服务器(也称为服务器集群,或web场),您可以简单地从集群中取出一些服务器并更新它们。这就是我们推送更新的方式。我们使用Citrix的软件来管理服务器群。它还处理负载平衡。这种类型的软件允许监视服务器,因此您可以确定所有用户何时“移出”web服务器(最近从集群中移出)。然后,您可以重置、部署新的构建,然后移动到下一台服务器(或一组服务器,具体取决于您的配置)。我们有20多个虚拟web服务器。通常,我们关闭一半的服务器,更新它们,当我们将前一半放回集群/场中时,再关闭另一半。这应该允许不中断的服务。我知道你想让这个过程自动化。我假设您使用的是Windows NLB (网络负载平衡)。您可以编写一个PowerShell脚本来自动关闭服务器。这里有一个参考:https://technet.microsoft.com/en-us/library/ee817138
我知道这可能被看作是一种变通方法。我不确定在ASP.NET核心中回收应用程序池是否总是必要的。我找不到一个明确的答案。大多数生产应用程序无论如何都应该位于多个web服务器上。即使你没有很多用户,你也应该有多个用于故障转移的web服务器。
https://stackoverflow.com/questions/39972590
复制