MSDeploy覆盖IIS设置

问题描述:

我终于有了TeamCity安装程序来构建源代码管理更改,并且使用'包'目标和生成的'deploy.cmd将独立的MSBuild任务设置打包并部署到登台服务器上的IIS '脚本。在构建事件,文件包含/排除等方面,一切都是完美的......MSDeploy覆盖IIS设置

但是,我遇到了如何部署软件包的问题。无论何时将包部署到服务器,IIS设置都会被吹走。例如,我可以设置缓存过期标题或打开静态压缩,在部署我的软件包后,它们将恢复为服务器的默认值。

有谁知道我该如何解决这个问题?是否有我可以忽略的参数或规则?

+0

覆盖哪些类型的设置? – 2010-11-03 08:58:04

+0

它正在覆盖诸如Dynamic/Static Compression和Cache Expiration Headers之类的东西。 – Dave 2010-11-08 20:33:08

我认为你遇到的情况与你想象的不同。

在IIS 7中,当您为属性设置属性值时,如描述存储在应用程序的web.config中的配置,而不是applicationHost.config。比如我刚刚创建了一个网站,并修改这些设置,然后我的web.config文件中的以下片段被删除。

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

所以,当你执行同步发生的事情在你的包在web.config中覆盖其中具有修改属性的web.config。您需要做什么才能在IIS 7中配置您的应用程序,然后将它放入web.config文件中。或者,如果你想要的话,你可以把它放在web.debug.config或web.release.config中,如果你想在发布时只在你的web.config中有。

+0

是的,MSDeploy将从您的项目中获取web.config,并在其上运行提供的转换(您也可以在MSDeploy配置中添加特定的转换,以及您提到的* build *),并将其复制到服务器。 – 2010-11-15 20:27:26

+0

谢谢,我甚至没有意识到更改IIS设置修改了web.config,我只是认为它正在进行配置数据库更改。这对IIS7来说是新的吗? – felickz 2011-08-08 13:53:55