我有一个使用IISIntegration()的.NET Core网站:
var contentRoot = Directory.GetCurrentDirectory();
var host = new WebHostBuilder()
.UseKestrel()
.UseContentRoot(contentRoot)
.UseSetting("detailedErrors", "true")
.UseIISIntegration()
.UseStartup<Startup>()
.CaptureStartupErrors(true)
.Build();
当我使用Web部署发布时,该网站发布很快,因为它现在不大,但是有一个2秒左右的时间段,如果您尝试在发布时访问生产网站(当它实际复制文件时)该网站已关闭,您将获得一个空白页面,标题为“正在建设中的网站”。
这与旧的EF 4.x不同,当您发布到已经运行的站点时,该站点只会旋转并尝试在发布时加载,但最终请求将在发布完成后进行并加载。
我似乎无法提及有关此特定问题的此问题或任何其他问题,没有其他人有此问题以及解决方法是什么?我们的团队经常在一天中间发布错误修复的快速迭代(我们是非常小的商店),但我们不能让网站每次停机几秒钟(或者如果网站变大,可能会更长)我们发布。
部署过程中,部署过程会将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>
来禁用此行为,但我还没有测试这是否真的有效。