我终于让TeamCity设置为基于源代码控制的更改,以及单独的MSBuild任务设置,使用“package”目标和生成的“deploy.cmd”脚本打包并部署到登台服务器上的IIS。在构建事件,文件包含/排除等方面,一切都很完美......
但是,我遇到了如何部署软件包的问题。每当我将程序包部署到服务器时,IIS设置都会被吹走。例如,我可以设置缓存过期标头或打开静态压缩,在部署我的包后,它们将恢复为服务器的默认值。
有谁知道我怎么能解决这个问题?是否有我可以通过的参数或我可以忽略的规则?
答案 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中使用它。