部署后关闭 Azure App Service

Take down Azure App Service upon deployment

我正在使用来自 Appveyor 的 Webdeploy 将 ASP.NET Core RC2 应用部署到 Azure 应用服务实例。

msdeploy.exe -source:IisApp='%s\.deploy' -dest:IisApp='%s',ComputerName='https://%s.scm.azurewebsites.net/msdeploy.axd',UserName='$%s',Password='%s',IncludeAcls='False',AuthType='Basic' -verb:sync -enableLink:contentLibExtension  -retryAttempts:2"

这在 RC1 上运行良好,但现在我收到错误消息:

错误代码:ERROR_FILE_IN_USE 更多信息:Web 部署无法修改目标上的文件 'MyTeam.exe',因为它已被外部进程锁定。为了使发布操作成功,您可能需要重新启动应用程序以释放锁定,或者在下次尝试发布时使用 .Net 应用程序的 AppOffline 规则处理程序。

据我从错误消息中了解到,可以通过添加

来解决
<EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>

在用于 webdeploy 的 .pubxml 文件中,但由于我没有 .pubxml 文件,我想知道;

有什么方法可以使用 msdeploy.exe 命令指定 EnableMSDeployAppOffline 吗?

或从我的部署环境 (AppVeyor) 关闭和重新启动应用服务的任何其他优雅方式?

是的,您可以将以下标志添加到您的 msdeploy 调用中:

 -enableRule:AppOffline

http://www.iis.net/learn/publish/deploying-application-packages/taking-an-application-offline-before-publishing

注意 aspnetcore.dll 7.1.1970.0

中可能存在的已知错误

https://github.com/aspnet/Home/issues/694 https://github.com/aspnet/AspNetCoreModule/issues/50

检查你的 aspnetcore.dll 版本(Kudu/ProcessExplorer/you app process/Properties/Modules/aspnetcore.dll)

实际上版本 7.1.1971.0 已修复,AppOffline 再次正常运行。