如何在C#中将web.config部分读作XML?

时间:2012-03-16 07:46:33

标签: c# xml web-config app-config

这是从以下复制的示例:

How to read custom config section in app.config in c#

  
    

我想阅读app.config中的以下自定义部分:

  
<StartupFolders>    
   <Folders name="a">
      <add folderType="Inst" path="c:\foo" />
      <add folderType="Prof" path="C:\foo1" />      
   </Folders>
   <Folders name="b">
      <add folderType="Inst" path="c:\foo" />
      <add folderType="Prof" path="C:\foo1" />      
   </Folders> 
</StartupFolders>

这也是我的情况。但是,我不想创建用于处理值的自定义类,在web.config中定义此类,然后最终使用它。它对我的需求很重。

相反,我想做一些非常简单的事情 - 将一个部分检索为XML。然后我可以使用常规Linq.Xml来解析它。这样,我不需要为每个部分创建新类,我不需要声明它们。为了我的目的,一方面是足够的,另一方面是最小的(我做了一次,嵌套部分的键值映射器)。即完美。

唯一缺少的是(我的问题) - 如何将web.config部分作为XML获取? 关于该部分的说明:

  • 无法编码,因为必须手动编辑
  • 由于同样的原因无法序列化

所以我不是在寻找一种解决方法,如何在appSettings中将整个部分作为值进行挤压,但我真的在寻找一种方法来将正确的部分作为XML。

我想从ConfigManager(!)获取它,因为这样我就不必处理解析我应该阅读哪个web.config等等。比手动模仿web.config优先级更容易犯错。


请原谅我提醒这一点,但请避免“回答”,不要这样做,每个部分都要使用自定义类等等。我已经考虑过了,并且选择了它。 < / p>

2 个答案:

答案 0 :(得分:2)

我认为您必须手动执行此操作并将Web配置加载到内存中:

XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("~/Web.config")); 

或者您需要创建要避免的自定义配置部分。

答案 1 :(得分:-1)

完全未经测试,但你可以使用这样的东西吗? :

ConfigurationSection exampleSection = 
    (ConfigurationSection)ConfigurationManager
                                        .GetSection("system.web/exampleSection");

然后可能使用exampleSection.ElementInformation来获取更多信息?