修改web.config文件,就像它是文本文件一样

时间:2011-02-28 12:50:53

标签: c# asp.net web-config

我需要为许多网站的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 个答案:

答案 0 :(得分:2)

最好尽可能避免重新发明轮子。

你看过ConfigurationManager了吗?这真的很有用。它有很多好方法,例如GetSection

获得相关部分后,您可以保存修改。

答案 1 :(得分:0)

我能想到的最糟糕的情况根据您的情况,您的替换文字包含<!-- ... -->条评论,文件中包含</configSections> 评论,因为xml评论不能很好地嵌套。如果你声称你的“非常长的xml ......”没有评论它可能会起作用(虽然结果可能并不总是很漂亮)。

就个人而言,我会使用xml ...

答案 2 :(得分:0)

我必须同意Joe R和Marc,如果你只是添加属性,使用XML是可行的方法。

那就是说,我完全按照你的说法(出于其他目的)没有伤害。

我们希望有一种方法可以让开发人员保留QA / Test web.config的单个副本,而无需知道我们的10个测试系统中的哪个(所有dns都被硬命名以供多个团队访问)代码正在部署到。因此,开发人员使用变量和控制字符“$(x)”检查web.configs,我们将解析为文本并在部署时替换。我发现我有更多的灵活性和更好的性能(我打破文件,在块/行中并行处理,然后重新组装)

所以回答一下,从技术上来说这应该不是问题。

建议,除非您找到某些特定原因,否则不要这样做。我永远不会这样做,而不是先尝试XML方法,取得成功,只想要不同的行为