【问题标题】:web.config File Section Replacementsweb.config 文件部分替换
【发布时间】:2009-05-28 15:15:31
【问题描述】:

我有一个使用外部文件替换 web.config 部分的 Web 部署项目。 (这是更改连接字符串部分)。 手动构建时,web.config 部分替换工作正常,但作为 TFS 构建的一部分构建时,该部分不会被替换。我在构建日志中找不到任何错误或警告。

可能的原因是什么,或者我该如何“调试”这个?

【问题讨论】:

    标签: msbuild web-deployment-project


    【解决方案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 文件。

    【讨论】:

      【解决方案2】:

      我不确定这是否会有所帮助....但这是一种无需替换整个配置部分即可添加/更新连接字符串的方法。

        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....
              }
      

      【讨论】:

      • 您如何将其与构建或 Web 部署集成?
      【解决方案3】:

      如果您正在使用或可以升级到 Visual Studio 2010,则可以利用新的 web.config 转换来根据所选配置更改 web.config。

      http://msdn.microsoft.com/en-us/library/dd465318.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-11
        • 2022-08-19
        • 2020-06-10
        • 2010-11-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多