我有一个使用 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 秒左右的时间文件)表明网站已关闭,您会看到一个空白页面,标题为“正在 build 中的网站”。
这与旧的 EF 4.x 不同,在旧的 EF 4.x 中,当您发布到一个已经运行的网站时,该网站只会在发布时旋转并尝试加载,但最终请求会在发布后通过并加载完成了。
我似乎找不到任何关于这个问题的提及或关于这个特定问题的任何其他问题,没有其他人有这个问题吗?解决方法是什么?我们的团队经常在一天中发布以快速迭代错误修复(我们是非常小的商店),但我们不能让网站每次都关闭几秒钟(或者如果网站变大,可能会更长)我们发布。
最佳答案
部署过程放置了一个 app_offline.htm
部署运行时文件夹中的文件。如果 ASP.NET Core 模块找到此文件,它会关闭您的应用程序并为所有请求返回此文件的内容。
引用资料:
https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/iis/?view=aspnetcore-2.2#locked-deployment-files
https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/aspnet-core-module?view=aspnetcore-2.2#app_offlinehtm
您可以通过设置 <EnableMSDeployAppOffline>False</EnableMSDeployAppOffline>
来禁用此行为在您的发布配置文件中,但我还没有测试这是否真的有效。
关于c# - .NET Core Web Deploy to production 在发布时关闭站点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55766921/