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

本文关键字:集合 自定义部 Web Config | 更新日期: 2023-09-27 18:10:58

我有一堆路由,我想把它们放到我的Web中。配置文件。我需要一个键和两个值字段为每个部分/项目的集合。

<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>

这可能吗?

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

是。一旦你有了开始,就不要太难了。

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

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

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

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

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

正如另一个答案所指出的,MSDN上也有覆盖(比以前好多了)。

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

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

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