.net core 在Azure应用程序服务和Visual Studio中实现应用程序脱机自动化

.net core 在Azure应用程序服务和Visual Studio中实现应用程序脱机自动化,.net-core,azure-devops,azure-web-app-service,msdeploy,azure-pipelines-release-pipeline,.net Core,Azure Devops,Azure Web App Service,Msdeploy,Azure Pipelines Release Pipeline,我想让App_Offline.htm成为定制的和可更新的,我正在使用MSDeploy,以便从Azure Pipeline和Visual Studio 2019发布。以两种方式发布作品。我的Web项目在.NETCore2.2上 我的问题是,我想使用MSDeploy在发布前将应用程序脱机,并在发布后删除App_Offline.htm。目前,我启用了DeployAppOffline,它显示默认的“正在维护”数秒。直到App_offline.htm上载到应用程序服务中。然后我用Kudu在线删除它 后来我

我想让App_Offline.htm成为定制的和可更新的,我正在使用MSDeploy,以便从Azure Pipeline和Visual Studio 2019发布。以两种方式发布作品。我的Web项目在.NETCore2.2上

我的问题是,我想使用MSDeploy在发布前将应用程序脱机,并在发布后删除App_Offline.htm。目前,我启用了DeployAppOffline,它显示默认的“正在维护”数秒。直到App_offline.htm上载到应用程序服务中。然后我用Kudu在线删除它

后来我决定使用MSDeploy CMDLine远程添加和删除文件app_offline.htm、发布前和发布后。。。Wich也可以工作,我必须在发布管道和Visual Studio中以纯文本的形式保存密码,所有方式都是“批处理脚本,PowerShell脚本…”

我的发布配置文件

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <PublishProvider>AzureWebSite</PublishProvider>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish>mySiteUrl</SiteUrlToLaunchAfterPublish>
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <ProjectGuid>GUID</ProjectGuid>
    <MSDeployServiceURL>myapp.scm.azurewebsites.net:443</MSDeployServiceURL>
    <DeployIisAppPath>increditing-preview</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
    <EnableMSDeployBackup>True</EnableMSDeployBackup>
    <UserName>$myapp</UserName>
    <_SavePWD>True</_SavePWD>
    <_DestinationType>AzureWebSite</_DestinationType>
    <EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
    <MSDeployUseChecksum>true</MSDeployUseChecksum>
    <MSDeployPath Condition="'$(MSDeployPath)'==''">
       $(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IISExtensions\MSDeploy\3@InstallPath)</MSDeployPath>
    <MSDeployExe Condition=" '$(MSDeployExe)'=='' ">$(MSDeployPath)msdeploy.exe</MSDeployExe>
    <DeleteCMD>
      "$(MSDeployExe)" -verb:delete -dest:contentPath="$(DeployIisAppPath)/App_offline.htm",ComputerName="https://$(DeployIisAppPath).scm.azurewebsites.net/msdeploy.axd?site=$(DeployIisAppPath)",UserName="$(UserName)",Password="Password",IncludeAcls='False',AuthType='Basic'
    </DeleteCMD>
  </PropertyGroup>
  <Target Name="CustomActionsAfterPublish" AfterTargets="AfterPublish">
    <PropertyGroup>
    </PropertyGroup>
    <Message Text="Inside AfterPublish" Importance="high" />

    <!-- MSDeploy does not work  -->
    <!--<MSDeploy Verb="delete"
              Source="@(MsDeploySourceProviderSetting)"
              Destination="contentPath=myapp/App_Offline.htm,computername=$(MsDeployServiceUrl)"
              AllowUntrusted="$(AllowUntrustedCertificate)"
              UseChecksum="$(MSDeployUseChecksum)"
              UserAgent="$(_MSDeployUserAgent)"
              ExePath="$(MSDeployPath)" />-->
     <!-- Executing this command I have to use my Password in Pain Text   -->
    <Exec Command="$(DeleteCMD)" ></Exec>


  </Target>
</Project>

MSDeploy
Azure网站
释放
任何CPU
mySiteUrl
真的
假的
指南
myapp.scm.azurewebsites.net:443
递增预览
真的
WMSVC
真的
$myapp
真的
Azure网站
真的
真的
$(注册表:HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\IISExtensions\MSDeploy\3@InstallPath)
$(MSDeployPath)msdeploy.exe
“$(MSDeployExe)”-动词:delete-dest:contentPath=“$(deployiisppath)/App_offline.htm”,ComputerName=“https://$(deployiisppath).scm.azurewebsites.net/msdeploy.axd?site=$(deployiisppath)”,UserName=“$(UserName)”,Password=“Password”,IncludeAcls='False',AuthType='Basic'

为了避免库杜问题,我所要做的就是:

在my Azure应用程序服务中添加应用程序设置

并将true添加到我的发布配置文件中

    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <WebPublishMethod>MSDeploy</WebPublishMethod>
        <PublishProvider>AzureWebSite</PublishProvider>
        <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
        <LastUsedPlatform>Any CPU</LastUsedPlatform>
        <SiteUrlToLaunchAfterPublish>mySiteUrl</SiteUrlToLaunchAfterPublish>
        <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
        <ExcludeApp_Data>False</ExcludeApp_Data>
        <ProjectGuid>GUID</ProjectGuid>
        <MSDeployServiceURL>myapp.scm.azurewebsites.net:443</MSDeployServiceURL>
        <DeployIisAppPath>increditing-preview</DeployIisAppPath>
        <RemoteSitePhysicalPath />
        <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
        <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
        <EnableMSDeployBackup>True</EnableMSDeployBackup>
        <UserName>$myapp</UserName>
        <_SavePWD>True</_SavePWD>
        <_DestinationType>AzureWebSite</_DestinationType>
        /// EnableMSDeployAppOffline 
        <EnableMSDeployAppOffline>true</EnableMSDeployAppOffline>
        <MSDeployUseChecksum>true</MSDeployUseChecksum>

</Project>

MSDeploy
Azure网站
释放
任何CPU
mySiteUrl
真的
假的
指南
myapp.scm.azurewebsites.net:443
递增预览
真的
WMSVC
真的
$myapp
真的
Azure网站
///启用部署AppOffline
真的
真的
并选中Azure发布管道中的使应用离线:部署Azure应用服务任务


感谢您在此处分享您的解决方案,您可以接受它作为答案,这样它可以帮助其他遇到相同问题的社区成员。祝您愉快。我想如果我想在azure应用服务部署之前执行其他部署步骤,我必须手动创建app_offline.htm?(如数据库更新)