在发布时将.NET Core Web部署到生产中会导致站点中断?

时间:2019-04-19 19:29:25

标签: c# asp.net-mvc .net-core webdeploy

我有一个使用IISIntegration()的.NET Core网站:

 var contentRoot = Directory.GetCurrentDirectory();
 var host = new WebHostBuilder()
            .UseKestrel()
            .UseContentRoot(contentRoot)
            .UseSetting("detailedErrors", "true")
            .UseIISIntegration()
            .UseStartup<Startup>()
            .CaptureStartupErrors(true)
            .Build();

当我使用Web Deployment发布时,该站点很快发布,因为它现在不大,但是有大约2秒钟的时间,如果您尝试在生产时访问生产中的站点,则该发布会发生(实际上是在复制时文件),则该站点已关闭,您将获得空白页,标题为“ Site Under Construction”。

这与旧的EF 4.x不同,在EF 4.x中,当您发布到已经运行的网站时,该网站会旋转并尝试在发布时进行加载,但最终请求将在发布后通过并加载完成了。

我似乎找不到关于此特定问题的任何提及或任何其他问题,没有其他人遇到此问题,并且解决方法是什么?我们的团队经常在一天中发布,以便快速修正错误(我们是一家很小的商店),但是每次都不能让网站宕机几秒钟(如果网站变大,则可能会更长)我们发布。

1 个答案:

答案 0 :(得分:1)

在部署过程中,部署过程会将app_offline.htm文件放置在文件夹中。如果ASP.NET Core模块找到此文件,它将关闭您的应用程序,并为所有请求返回此文件的内容。

参考文献:
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2#locked-deployment-files
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.2#app_offlinehtm

您可以通过在发布个人资料中设置<EnableMSDeployAppOffline>False</EnableMSDeployAppOffline>来禁用此行为,但是我尚未测试它是否真的有效。