我收集了一些我已經研究完成本文主題的方法以及我遇到的問題(希望有用)。請告訴我,你是否找到了更好的其他方式,特別是如果他們解決了我提到的方法所沒有的問題。ASP.NET連接字符串部署的最佳實踐
在web.config中離開連接字符串和使用XDT/msdeploy改造根據我的積極構建配置(例如,web.PublicTest.config文件)與設置來替換它們。我的問題是我合併並將一些特定於服務器的設置隱藏到一個具有許多配置元素的全局相同的文件中。另外,我不能在多個同級應用程序之間共享連接字符串定義。
指定configSource =「DeveloperLocalConnectionStrings.config」爲在web.config中連接字符串值,並且XDT改變這個值,以指向在我的代碼庫的多個特定於環境的文件之一。我的問題是,我將所有環境的密碼發送到所有目的地(當然除SVN外),並將未使用的配置部分放在等待意外使用的服務器上。
machine.config文件中的特定連接字符串,而不是web.config。問題:heck希望在machine.config中找到連接字符串,並且因此出現意外名稱衝突的可能性很高。
指定一個configSource =「LocalConnectionStrings.config」,不要轉換該值,並編輯項目xml以排除連接字符串config的部署。 http://msdn.microsoft.com/en-us/library/ee942158.aspx#can_i_exclude_specific_files_or_folders_from_deployment - 這是我發現的解決我對專有(非分佈式)Web應用程序需求的最佳解決方案,但是我很偏執,另一名團隊成員會有一天來複制生產站點以測試某些原因,並且瞧!生產數據庫現在在UAT期間被修改。 (更新:我發現在這種情況下我不能使用一鍵發佈,只有帶-skip參數的msdeploy命令行。排除上面的文件與將其設置爲「無」編譯操作而不是「內容「,並導致軟件包從部署目標中刪除它。)
連接部署包以提示連接字符串,如果它尚未設置(我不知道如何執行此操作但我知道這是可能的)。這與上述#4有相似的結果。
指定一個configSource =「.. \ ConnectionStrings.config」。對我的需求會很好,因爲我可以在我選擇的應用程序中共享配置,並且在我的應用程序目錄中沒有任何特定於計算機的配置。不幸的是父路徑在這個屬性中是不允許的(比如它們是'appSettings file =「'' - 也請注意,你可以在配置源=引用內使用file = =)。
p.s.這些解決方案都在這裏討論:ASP.Net configuration file -> Connection strings for multiple developers and deployment servers
1.我喜歡它 - 雖然,你要笑,但目前測試和開發應用程序池相同的IIS服務器上運行。 – Shannon 2010-10-15 07:46:22
2.你能澄清嗎?這個ini文件可以使用相同的庫方法嗎?具體來說,我有一個實體框架格式化連接字符串。 – Shannon 2010-10-15 07:47:47
3.謝謝你,我不知道我可以在連接字符串中使用非對稱密鑰,或者加密連接字符串(無論你的意思)。我將研究以瞭解更多關於如何完成的內容。 – Shannon 2010-10-15 07:52:25