【问题标题】:MSDeploy over-writing IIS settingsMSDeploy 覆盖 IIS 设置
【发布时间】:2010-11-02 22:33:45
【问题描述】:

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

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

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

【问题讨论】:

  • 它覆盖了哪些类型的设置?
  • 它正在覆盖动态/静态压缩和缓存过期标头等内容。

标签: visual-studio iis deployment msdeploy


【解决方案1】:

我认为你遇到的和你想的不一样。

在 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.config 中,则可以将其放在 web.debug.config 或 web.release.config 中。

【讨论】:

  • 是的,MSDeploy 将从您的项目中获取 web.config,在其上运行提供的转换(您还可以在 MSDeploy 配置中添加特定转换,以及 build 你提到的那些),并将其复制到服务器。
  • 谢谢,我什至不知道更改 IIS 设置会修改 web.config,我只是认为它正在更改元数据库。这是 IIS7 的新功能吗?
猜你喜欢
  • 1970-01-01
  • 2010-11-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
相关资源
最近更新 更多