我有一堆路由,我希望能够在我的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>
这可能吗?
答案 0 :(得分:7)
这里非常相似的样本:http://jopinblog.wordpress.com/2007/04/20/custom-configurationsections-in-net-20-config-files/
这是自定义栏目的官方页面:http://msdn.microsoft.com/en-us/library/2tw134k3.aspx
此外,这里也有类似的问题:How do I define custom web.config sections with potential child elements and attributes for the properties?
答案 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。