2009-05-28 142 views
0

我有一個web部署項目,使用外部文件執行web.config部分替換。 (這是爲了改變連接字符串部分)。 當手動構建時,web.config部分替換工作正常,但是當作爲TFS構建的一部分構建時,部分不會被替換。我在構建日誌中找不到任何錯誤或警告。web.config文件部分替換

有什麼可能的原因,或者我該如何「調試」呢?

回答

0

我不確定這會有所幫助....但這是一種添加/更新連接字符串而不必替換整個配置節的方法。

public static void SaveConfigVal(string connectionString, string connName) 
     { 

      System.Configuration.ExeConfigurationFileMap fileMap = new System.Configuration.ExeConfigurationFileMap(); 
      fileMap.ExeConfigFilename = GetConfigFileName(); 
      //System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); 
      System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 
      // Retrieve the section group 
      ConnectionStringSettings keyValue = config.ConnectionStrings.ConnectionStrings[connName]; 

      // If the key already exists, just replace 
      if (keyValue != null) 
      { 
       keyValue.ConnectionString = connectionString; 
      } 
      else 
      { 
       // Add a new key if the setting doesn't exist 
       config.ConnectionStrings.ConnectionStrings.Add(new ConnectionStringSettings(connName, connectionString)); 
      } 

      config.Save(ConfigurationSaveMode.Modified);// (ConfigurationSaveMode.Modified); 
      ConfigurationManager.RefreshSection("ConnectionStrings"); 
     } 

     private static string GetConfigFileName() 
     { 
      //return config file name.... 
     } 
+0

您如何將其與構建或Web部署集成? – simon831 2009-05-29 10:02:57

1

你有沒有考慮過使用Web.Config的能力來從一個單獨的文件拉節?你指的是外部文件,像這樣(這是我的裝載有我的連接字符串部分文件代碼):

<connectionStrings configSource="WebCS.config"/> 

然後連接字符串可以部署爲一個單獨的文件:

<connectionStrings> 
     <add name="ConnString" connectionString="Data Source=<server>;Initial Catalog=<DB>;User ID=<ID>;Password=<pwd>" providerName="System.Data.SqlClient"/> 
</connectionStrings> 

這樣,您根本不必擔心更改web.config文件。