如何访问App.config中的其他选项?

时间:2011-07-04 07:54:08

标签: c# configuration app-config

基本上,当涉及到连接字符串和配置键值对时,App.config和Web.config很容易处理。

但是如何访问这两个文件的其他部分?

The only way I can find表示必须创建configuration/configSections/section才能向配置文件添加其他设置。这是错误的,因为几个.NET组件实际上访问自定义设置而不使用configuration/configSections/section。例如,在处理诊断设置时,我可以使用以下部分:

<system.diagnostics>
  <trace autoflush="true"/>
  <sources>
    <source name="Samples">
      <listeners>
        <add name="ConsoleListener" type="System.Diagnostics.ConsoleTraceListener"/>
      </listeners>
    </source>
  </sources>
</system.diagnostics>

无需向文件添加任何configSection。

如何在我自己的代码中做同样的事情?

3 个答案:

答案 0 :(得分:1)

@Vladislav的评论涵盖了它。配置部分需要始终定义,但不一定在web / app配置文件中,因为配置文件具有层次结构。所以标准部分是在标准的machine.config文件中定义的。

如果您需要可跨多个应用程序访问的部分,则可以修改machine.config文件并在其中指定它们。但是,这不是你应该在99.99%的编程情况下做的事情。它所做的只是隐藏开发人员的部分细节。

请记住,如果您要这样做,则必须向所有计算机提供定义此部分的dll,并在应用程序修改它时保持更新。这有一个显着的维护开销,所以你必须绝对肯定这样做有一个真正的好处。

你问的简单答案是肯定的,你可以做到,但你永远不应该这样做。偶尔,这是错误的。

答案 1 :(得分:1)

您提到的部分未定义,它是在机器配置文件(.NET的全局)中定义的。如果需要自定义部分,则需要在文件的开头定义它们并定义代表它们的类,因此.NET知道如何处理相应的对象。

如果您只需要在不获取对象和所有内容的情况下访问某些设置,则可以将该部分定义为仅使用ConfigSectionHandler,然后直接访问XML文档,如this(毕竟,配置file只是另一个XML文件。)

我强烈建议转到直接访问路线,而是使用常规方式,即this guide。通过验证所有内容并使其易于从代码中访问,它将为您省去一些麻烦。这是最初建立的PITA,但它是值得的。

答案 2 :(得分:0)

您可以在app / web.config中定义自己的部分,查看this great tutorial