2011-10-12 98 views
6

我有一堆我希望能够引发到我的Web.Config文件中的路由。我需要集合中每个部分/项目的一个键和两个值字段。东西沿线...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> 

这可能吗?

回答

2

是。一旦你开始,并不难。

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

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

毕竟这是建立在运行时可以访问您的配置部分为:

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

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

为另一answer有注意到也是MSDN上的覆盖率(比以前好很多)。

1

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

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

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