MSDeploy覆盖IIS设置

时间:2010-11-02 22:33:46

标签: visual-studio iis deployment msdeploy

我终于让TeamCity设置为基于源代码控制的更改,以及单独的MSBuild任务设置,使用“package”目标和生成的“deploy.cmd”脚本打包并部署到登台服务器上的IIS。在构建事件,文件包含/排除等方面,一切都很完美......

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

有谁知道我怎么能解决这个问题?是否有我可以通过的参数或我可以忽略的规则?

1 个答案:

答案 0 :(得分:5)

我认为你遇到的不同于你的想法。

在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中使用它。