【问题标题】:How to read web.config section as XML in C#?如何在 C# 中将 web.config 部分读取为 XML?
【发布时间】:2012-04-01 18:45:46
【问题描述】:

这是复制的示例:

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 来解析它。这样,我不需要为每个部分创建新类,也不需要声明它们。就我的目的而言,一方面它就足够了,另一方面又很少(我做了一次,嵌套部分的键值映射器)。 IE。完美。

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

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

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

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


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

【问题讨论】:

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


    【解决方案1】:

    我认为您要么必须手动完成,然后将 Web 配置加载到内存中:

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

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

    【讨论】:

    • 是的,似乎你要么手动完成所有事情,要么按照 MS 所说的那样做,没有中间立场,因为 ConfigurationManager 在验证配置时非常严格,你甚至不能在配置中添加任何额外的东西文件。可惜:-(
    【解决方案2】:

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

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

    那么可能使用exampleSection.ElementInformation 获取更多信息?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-24
      • 2011-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-25
      相关资源
      最近更新 更多