如何在 C# 中以 XML 形式读取 web.config 部分?

gre*_*man 5 c# xml app-config web-config

这是从以下位置复制的示例:

如何在 C# 中读取 app.config 中的自定义配置部分

我想阅读 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>
Run Code Online (Sandbox Code Playgroud)

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

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

唯一缺少的部分是(我的问题)——如何获取 XML 形式的 web.config 部分?关于该部分的注意事项:

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

因此,我并不是在寻找一种解决方法,如何将整个部分压缩为 appSettings 中的值,但我确实在寻找一种方法来获取适当的部分作为 XML。

我想从 ConfigManager (!) 获取它,因为这样我就不必处理解析应该读取哪个 web.config 等问题。即,比手动模仿 web.config 优先级更少出错的机会。


请原谅我提醒这一点,但请避免“答案”,你不应该这样做,每个部分使用自定义类等。我已经考虑过这一点,并选择反对它。

小智 2

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

XmlDocument doc = new XmlDocument();
doc.Load(Server.MapPath("~/Web.config")); 
Run Code Online (Sandbox Code Playgroud)

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