【问题标题】:Custom section/collection in Web.Config [duplicate]Web.Config 中的自定义部分/集合 [重复]
【发布时间】:2011-12-05 23:51:56
【问题描述】:

我有一堆路由希望能够放入我的 Web.Config 文件中。对于集合中的每个部分/项目,我需要一个键和两个值字段。类似的东西……

<routes>
    <add
        key="AdministrationDefault"
        url="Administration/"
        file="~Administration/Default.aspx" />

    <add
        key="AdministrationCreateCampaign"
        url="Administration/CreateCampaign/"
        file="~/Administration/CreateCampaign.aspx" />

    <add
        key="AdministrationLogout"
        url="Administration/Leave/"
        file="~/Administration/Leave.aspx" />
</routes>

这可能吗?

【问题讨论】:

    标签: c# web-config custom-attributes


    【解决方案1】:

    是的。一旦开始就不会太难。

    您需要创建一个ConfigurationSection 派生类来定义&lt;routes&gt; 部分(然后将&lt;section&gt; 添加到配置中以将&lt;routes&gt; 元素链接到您的类型)。

    然后,您将需要一个类型来定义集合的每个元素,并标记为默认值,在您的第二个类型上为该集合定义一个属性。

    完成所有这些设置后,在运行时您可以通过以下方式访问配置部分:

    var myRoutes = ConfigurationManager.GetSection("routes") as RoutesConfigSection;
    

    我的博客有几篇关于这个背景的文章:http://blog.rjcox.co.uk/category/dev/net-core/

    正如另一个 answer 所述,MSDN 上也有报道(比以前好多了)。

    【讨论】:

      【解决方案2】:

      如果你不想创建一个类来代表你的配置部分,你可以这样做:

      var configSection = ConfigurationManager.GetSection("sectionGroup/sectionName");
      var aValue = (configSection as dynamic)["ValueKey"];
      

      转换为动态可让您访问 configSection 中的键值。您可能必须在 configSection 中添加断点和峰值,以查看其中有什么以及要使用什么 ValueKey。

      【讨论】:

      • 它不起作用。它抛出“无法读取配置部分,因为它缺少架构”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-31
      • 1970-01-01
      • 2011-06-17
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      相关资源
      最近更新 更多