2010-11-02 105 views
1

我終於有了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

回答

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中有。

+0

是的,MSDeploy將從您的項目中獲取web.config,並在其上運行提供的轉換(您也可以在MSDeploy配置中添加特定的轉換,以及您提到的* build *),並將其複製到服務器。 – 2010-11-15 20:27:26

+0

謝謝,我甚至沒有意識到更改IIS設置修改了web.config,我只是認爲它正在進行配置數據庫更改。這對IIS7來說是新的嗎? – felickz 2011-08-08 13:53:55