2009-05-28 4 views
0

외부 파일을 사용하여 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

이것을 빌드 또는 웹 배포와 통합하는 방법은 무엇입니까? – simon831

+0

MSI를 사용하고 있습니까? – CSharpAtl

1

Web.Config에서 별도의 파일에서 섹션을 가져 오는 것이 좋습니다.

<connectionStrings> 
     <add name="ConnString" connectionString="Data Source=<server>;Initial Catalog=<DB>;User ID=<ID>;Password=<pwd>" providerName="System.Data.SqlClient"/> 
</connectionStrings> 
: 그런 다음 연결 문자열을 별도의 파일로 배포 할 수 있습니다

<connectionStrings configSource="WebCS.config"/> 

: 당신과 같이 외부 파일을 참조하십시오 (이 내 연결 문자열 섹션을 가진 파일을로드하는 내 코드입니다)

그런 식으로 web.config 파일을 변경하는 것에 대해 걱정할 필요가 없습니다.