Web.Config中的自定义部分/集合

时间:2011-10-12 09:49:03

标签: c# web-config custom-attributes

我有一堆路由,我希望能够在我的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>

这可能吗?

3 个答案:

答案 0 :(得分:7)

答案 1 :(得分:2)

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

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

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

设置完毕后,在运行时,您可以访问配置部分:

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

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

如另一个answer所述,在MSDN上也有覆盖率(比以前好很多)。

答案 2 :(得分:2)

如果您不想创建代表您的配置部分的类,您可以执行以下操作:

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

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