2013-07-26 49 views
3

我有一個c#網站,我已經通過iis7/webdeploy進行了部署,這很好。問題是當我更新網站時,web.config文件被覆蓋。該文件包含數據庫連接和其他一些特定於其站點的設置。自發布以來,我一直在通過登錄來更新他們的網站,複製web.config,重新運行導入,然後重新處理web.config。我忘記這麼做了,結果導致我做了很多額外的工作。但是,現在我正在將Web界面作爲我自動部署的一部分,因此我需要弄清楚爲什麼它會覆蓋站點的當前配置。如何防止使用webdeploy覆蓋web站點更新到站點

有誰知道爲什麼web.config被覆蓋和/或如何解決它,所以它不會這樣做了嗎?

謝謝! Scott

+1

您使用的是webdeploy的哪些設置?你有一個包含正確連接字符串的web.release.config文件嗎? –

+0

你不能只是將Web.config(屬性下)的「Build Action」設置爲「None」嗎?我現在想象它會設置爲「內容」,因此每次發佈時都將其複製到服務器。 –

回答

5

您可以選擇使用網絡部署時有兩種選擇:

  • 參數
  • Web.config文件轉換

使用的參數,可以指定可以在部署軟件包期間修改設置。例如,您可以爲連接字符串,WCF配置或應用設置創建參數。當管理員現在部署應用程序時,他們可以修改當前安裝的所有設置。 當您將一個軟件包部署到多個環境時,此方法非常有用。使用諸如XmlPoke之類的東西,你可以完全自動化這個過程。

有關如何使用參數的完整說明,請參閱:Reference for the Web Application Package

Web.config轉換是在編譯時完成的。通過創建多個配置,您可以使用XSLT更改web.config文件中的值。這些更改在構建包時應用。 SlowCheetah是一個很棒的工具,可以幫助你測試你的轉換。 通過創建特定的配置(例如:分段,測試,生產),您可以在部署管道中使用這些配置來正確配置所有設置。

有關如何使用web.config文件轉換的詳細信息,請參閱:Web.config Transformation Syntax for Web Project Deployment Using Visual Studio

參數爲您提供了更多的自由,但也更復雜。 Web.config轉換易於使用,並且可以在您知道將要部署到的環境時使用。