昨天偶然想起来把一个项目中生成静态页配置文件做成一个单独到config文件。由于以前没有接触过自定义Configuration动手前上网查一下资料,发现蛮简单的。。定义section。。。定义属性。。。ConfigurationProperty声明。很快就把结构搞定了。。
接着配置web.config文件
Code
<configSections>
<sectionGroup name="cms">
<section name="staticPages" restartOnExternalChanges="false" type="cms.Plugins.StaticBuilder.StaticSection, cms.Plugins" />
</sectionGroup>
</configSections>
然后搞了一个单独的文件 StaticPage.config (^_^应该大家已经知道我错在那里了。。。呵呵)<configSections>
<sectionGroup name="cms">
<section name="staticPages" restartOnExternalChanges="false" type="cms.Plugins.StaticBuilder.StaticSection, cms.Plugins" />
</sectionGroup>
</configSections>
Code
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<cms>
<staticPages enable="true" fileDirectory="/StaticPages/">
<add name="default" urlKey="/Default.aspx" args="10" />
<add name="news1" urlKey="/News.aspx" args="5" />
</staticPages>
</cms>
</configuration>
然后加载文件<?xml version="1.0" encoding="utf-8"?>
<configuration>
<cms>
<staticPages enable="true" fileDirectory="/StaticPages/">
<add name="default" urlKey="/Default.aspx" args="10" />
<add name="news1" urlKey="/News.aspx" args="5" />
</staticPages>
</cms>
</configuration>
Configuration configuration =WebConfigurationManager.OpenWebConfiguration("/StaicPages.config")
运行。。没效果。。失败。找问题。。
然后把staticPage.config文件的内容复制到web.config文件再运行。。。成功。。。
再放到单独文件里边。。。。失败。。。
上网查资料,发现网上相关自定义配置Configuration的文章基本上都是一个模子刻出来的一样。。跟MSDN上差不多。。。找不到答案。。而查到一些些用到WebConfigurationManager.OpenWebConfiguration的代码。。。基本上也全是一个模样。。。WebConfigurationManager.OpenWebConfiguration(“~”)
怎么搞都不行。。。。快疯了。。。
过了一天半,最终加载.net framework源码调试。。才发现WebConfigurationManager.OpenWebConfiguration(string path) 这个方法,path参数是一个目录的url,而不是config文件的url。指定一个目录url会自动检测读取目录下边的web.config文件。。。。
郁闷中。。。。。。
最终也没有得到我想要的结果。。。不过总算学了点东西