Замены раздела файла web.config - PullRequest
0 голосов
/ 28 мая 2009

У меня есть проект веб-развертывания, который выполняет замену раздела web.config с использованием внешнего файла. (это изменить раздел строк подключения). Замена раздела web.config прекрасно работает при сборке вручную, но при сборке как части сборки TFS раздел не заменяется. Я не могу найти никаких ошибок или предупреждений в журнале сборки.

Каковы вероятные причины или как я могу отладить это?

Ответы [ 3 ]

1 голос
/ 28 марта 2010

Рассматривали ли вы возможность использования 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.

0 голосов
/ 22 ноября 2011

Если вы используете или можете выполнить обновление до Visual Studio 2010, вы можете использовать новые преобразования web.config для изменения web.config в зависимости от выбранной конфигурации.

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

0 голосов
/ 28 мая 2009

Я не уверен, что это поможет вообще .... но это способ добавить / обновить строку подключения без необходимости замены всего раздела конфигурации.

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