Web部署到Azure不会强制Web App获取新更改

Ale*_*akh 25 asp.net asp.net-mvc azure web-deployment microsoft-web-deploy

我有一个从我GITAzure App使用配置的自动部署Web Deploy.每次将新代码推送到repo时,都会启动build,然后将其部署到Azurewith Web Deploy.

问题是Web App(ASP.NET MVC)继续使用部署的代码提供请求,并且文件替换不会真正影响它.即使web.config已更改.基本上,我可以强制加载新应用程序的唯一方法是手动重启(或停止/启动).

这是我的publishig配置文件:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <ADUsesOwinOrOpenIdConnect>False</ADUsesOwinOrOpenIdConnect>
    <PublishProvider>AzureWebSite</PublishProvider>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish>https://app-name.azurewebsites.net</SiteUrlToLaunchAfterPublish>
    <LaunchSiteAfterPublish>False</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <MSDeployServiceURL>app-name.scm.azurewebsites.net:443</MSDeployServiceURL>
    <DeployIisAppPath>app-name</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>WMSVC</MSDeployPublishMethod>
    <EnableMSDeployBackup>True</EnableMSDeployBackup>
    <UserName>$app-name</UserName>
    <Password>...</Password>
    <AllowUntrustedCertificate>True</AllowUntrustedCertificate>
    <_SavePWD>True</_SavePWD>
    <_DestinationType>AzureWebSite</_DestinationType>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

msdn的相似主题没有答案

Dáv*_*nár 0

如果我错了请纠正我,但你还期望什么?如果应用程序正在“运行”,正在服务请求,则程序集将加载到内存中。如果更新它们,您应该重新加载应用程序以加载新的程序集。据我所知,没有办法从现有的 AppDomain 中删除程序集。因此,您最终需要创建一个新的应用程序(通过重新启动应用程序)。

app_offline.htm一种简单的解决方案是将文件与应用程序一起部署。如果 IIS 看到此文件,则停止响应新请求,系统中已有的请求将得到服务,然后应用程序将停止。app_offline.htm对于每个新请求,都会提供内容。完成部署后,使用 WebDeploy 运行一个简单的脚本,例如使用-postSync:runcommand=inmsdeploy并删除该app_offline.htm文件。新版本的应用程序将启动。

如果更新web.config文件,则应自动加载新配置。但这并不意味着应用程序将完全重新加载。

如果您在静态文件方面遇到此问题,那么可能是 HTTP 缓存的问题。文件已更新,但客户端(浏览器)从缓存加载它们。请参阅此问题了解更多详细信息。