Изменение файла web.config, как если бы это был текстовый файл - PullRequest
1 голос
/ 28 февраля 2011

Мне нужно добавить много записей в мой файл web.config для многих веб-сайтов.

Я начал с изучения XmlDocument и создания элементов и атрибутов, а затем вставил их в документ. Довольно скоро это выглядело как огромный объем работы для всех элементов, которые я должен добавить.

Каковы последствия обработки файла конфигурации как одной большой длинной текстовой строки и выполнения замены в определенных точках для добавления моих записей. Как то так ...

private void InsertXMLElement()
{
    StringBuilder webConfig = new StringBuilder();

    // get the file into a stringbuilder for manipulation
    using (var sr = new StreamReader("C:\web.config"))
    {
        webConfig.Append(sr.ReadToEnd());
    }

    // insert my element by doing a replace
    webConfig.Replace("</configSections>","very long xml element with lots of attributes" + "</configSections>");

}

Очевидно, что я знаю состояние файла заранее или могу выполнить дополнительные проверки, чтобы убедиться, что записи еще не существуют.

Ответы [ 3 ]

2 голосов
/ 28 февраля 2011

Лучше по возможности избегать повторного изобретения колеса.

Вы смотрели на ConfigurationManager ?Это действительно полезно.У него есть много хороших методов, таких как GetSection .

Когда у вас есть соответствующий раздел, вы можете сохранить изменения.

0 голосов
/ 28 февраля 2011

Я должен согласиться с Джо Р. и Марком, что использование XML, если вы просто добавляете атрибуты, - это путь.

Тем не менее я делаю именно то, что вы заявляете (для другой цели) без вреда.

Мы хотели, чтобы разработчики могли сохранять единственную копию файла QA / Test web.config без необходимости знать, какая из наших 10 тестовых систем(все днс жестко названы для доступа несколькими командами), к которому был развернут код.Поэтому разработчики проверяют в web.configs переменные и управляющий символ «$ (x)», и мы разбираем текст и заменяем его во время развертывания.Я обнаружил, что у меня больше гибкости и лучшей производительности (я разбиваю файл на части, параллельный процесс в блоках / строках, а затем снова собираю)

Итак, технически это не должно быть проблемой.

Чтобы предложить, не делайте этого, если вы не найдете какой-либо конкретной причины для этого.Я бы никогда не сделал это без предварительной попытки XML-подхода, имея успех и просто желая другого поведения

0 голосов
/ 28 февраля 2011

Худший случай, о котором я могу подумать , учитывая ваш сценарий , это то, что ваш текст замены содержит комментарий <!-- ... -->, а файл содержит </configSections> уже внутри комментарий, так как XML-комментарии не очень хорошо вкладываются.Если вы утверждаете, что ваш «очень длинный xml ...» не имеет комментариев, он, вероятно, сработает (хотя результат не всегда будет красивым).

Лично я бы использовал xml ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...