Le déploiement Web à Azure ne force pas L'application Web à prendre de nouvelles modifications

j'ai un déploiement automatique configuré de mon GIT à Azure App en utilisant Web Deploy . Chaque fois que le nouveau code est poussé vers le repo, build est lancé, puis déployé sur le Azure avec Web Deploy .

le problème est que Web App (ASP.NET MVC) continuent à servir des requêtes en utilisant le code déployé, et le remplacement du fichier ne l'affecte pas vraiment. Même si le web.la configuration a été changée. Fondamentalement, la seule façon que je peux forcer la nouvelle application à chargé est de le redémarrer (ou arrêter/démarrer) manuellement.

voici mon profil 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>

sujet similaire au msdn sans réponse

25
demandé sur Alexey Strakh 2017-02-07 09:48:22

2 réponses

David a déjà partagé ses idées. Il existe une autre façon d'aborder ce scénario en utilisant les "de déploiement . Vous pouvez créer un slot et ensuite configurer L'Auto-Swap pour y faire face. Cela a ajouté les avantages de zéro démarrage à froid et zéro temps d'arrêt .

voir ce pour plus d'informations: Configuration Automatique Swap

1
répondu Kaushal Kumar Panday 2017-06-26 14:52:27

corrigez - moi si je me trompe, mais qu'attendez-vous d'autre? Si l'application est" running", serving request, alors les assemblages sont chargés en mémoire. Si vous mettez à jour, vous devriez recharger l'application pour charger les nouvelles assemblées. Pour autant que je sache, il n'y a aucun moyen de supprimer des assemblages d'un AppDomain existant. Ainsi, vous finissez par avoir besoin d'en créer un nouveau (en redémarrant l'application).

une solution simple est de déployer un fichier app_offline.htm avec votre application. Si IIS voit ce fichier, puis cesse de répondre aux nouvelles demandes, les demandes déjà dans le système seront signifiées, puis la demande sera arrêtée. Pour chaque nouvelle requête, le contenu du app_offline.htm sera notifié. Après avoir terminé le déploiement, exécutez un script simple avec WebDeploy par exemple en utilisant -postSync:runcommand= dans msdeploy et supprimez simplement le fichier app_offline.htm . La nouvelle version de l'application démarre.

si vous mettez à jour le fichier web.config , alors la nouvelle configuration doit être chargée automatiquement. Mais cela ne signifie pas, l'application sera rechargé entièrement.

si vous avez ce problème avec les fichiers statiques, alors peut-être que la mise en cache HTTP est votre problème. Les fichiers sont mis à jour, mais les clients (navigateurs) les chargent depuis le cache. Voir cette question pour plus de détails.

0
répondu Dávid Molnár 2017-05-23 11:47:28