2010-11-02 21 views
1

J'ai enfin l'installation TeamCity pour construire sur les modifications de contrôle de source, et une configuration de tâche MSBuild séparée pour empaqueter et déployer vers IIS sur le serveur de transit en utilisant la 'paquet' cible et le 'deploy.cmd 'script. Tout est parfait en termes d'événements de construction, d'inclusion/exclusion de fichier, etc ...MSDeploy écrasant les paramètres IIS

Cependant, j'ai rencontré un problème avec la façon dont le paquet est déployé. Chaque fois que je déploie le package sur le serveur, les paramètres IIS sont éblouis. Par exemple, je peux définir des en-têtes d'expiration de cache ou activer la compression statique, et après le déploiement de mon paquet, ils reviendront aux valeurs par défaut du serveur.

Est-ce que quelqu'un sait comment je peux contourner cela? Y a-t-il un paramètre que je peux transmettre ou que je peux ignorer?

+0

Quels types de paramètres remplace-t-il? –

+0

Il écrase des éléments tels que les en-têtes de compression dynamique/statique et d'expiration de cache. – Dave

Répondre

5

Je pense que ce que vous rencontrez est différent de ce que vous pourriez penser.

Dans IIS 7, lorsque vous définissez les valeurs pour les propriétés comme vous décrivez la configuration pour cela est stockée dans le web.config pour l'application, et non applicationHost.config. Par exemple, je viens de créer un site et modifié ces paramètres, puis dans mon fichier web.config le fragment suivant a été abandonné dans.

<system.webServer> 
<validation validateIntegratedModeConfiguration="false" /> 
<modules runAllManagedModulesForAllRequests="true" /> 
    <urlCompression doStaticCompression="false" /> 
    <caching> 
     <profiles> 
      <add extension=".aspx" policy="CacheUntilChange" kernelCachePolicy="DontCache" /> 
     </profiles> 
    </caching> 
</system.webServer> 

Alors ce qui se passe lorsque vous effectuez une synchronisation web.config dans votre package écraser le web.config qui a les propriétés modifiées dedans. Ce que vous devez faire pour configurer votre application dans IIS 7 comme vous le souhaitez, puis récupérez le nœud dans votre fichier web.config. Alternativement, si vous le souhaitez, vous pouvez le placer dans web.debug.config ou web.release.config si vous ne voulez l'avoir que dans votre web.config lors de la publication.

+0

Oui, MSDeploy prendra le web.config de votre projet, exécutera les transformations fournies dessus (vous pouvez également ajouter des transformations spécifiques dans la configuration de MSDeploy, ainsi que les * build * que vous mentionnez), et les copier sur le serveur . –

+0

Merci, je n'étais même pas au courant que la modification des paramètres IIS modifiait le fichier web.config, je me suis juste dit qu'il faisait des changements dans la métabase. Est-ce nouveau pour IIS7? – felickz