我有一个使用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中,当您发布到已经运行的网站时,该网站会旋转并尝试在发布时进行加载,但最终请求将在发布后通过并加载完成了。
我似乎找不到关于此特定问题的任何提及或任何其他问题,没有其他人遇到此问题,并且解决方法是什么?我们的团队经常在一天中发布,以便快速修正错误(我们是一家很小的商店),但是每次都不能让网站宕机几秒钟(如果网站变大,则可能会更长)我们发布。
答案 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>
来禁用此行为,但是我尚未测试它是否真的有效。