I've created a custom class that inherits from System.Configuration.ConfigurationSection, implemented like this (this is obviously just to get the real configuration running):
public class Config : ConfigurationSection
{
[ConfigurationProperty("quoteOfTheDay", DefaultValue = "It is what it is.", IsRequired = false)]
public string QuoteOfTheDay
{
get
{
return this["quoteOfTheDay"] as string;
}
}
[ConfigurationProperty("yourAge", IsRequired = true)]
public int YourAge
{
get
{
return (int)this["yourAge"];
}
}
}
The full namespace + name of the class is MyApp.Core.Config, it's located in the MyApp.Core project which compiles to the MyApp.Core.dll assembly. I've then referenced this project from my ASP.NET/MVC3 project, which is called MyApp.UI. I've edited the Web.config file to add the sectionGroup and section elements like this:
<configSections>
开发者_开发百科<sectionGroup name="myAppConfigGroup">
<section name="myAppSection"
type="MyApp.Core.Config, MyApp.Core, Version=1.0.0.0, Culture=neutral, PublicKey=null"
allowLocation="true"
allowDefinition="Everywhere" />
</sectionGroup>
</configSections>
<myAppConfigGroup>
<myAppSection>
</myAppSection>
</myAppConfigGroup>
However, it doesn't seem like the type MyApp.Core.Config get used to validate the configuration or provide intelli-sense as I edit the configuration. Here's some observations I've made:
- I defined the
yourAgeproperty asIsRequired = trueand the application runs fine without it. - I can even change the type (to some type that doesn't even exist like Foo.Bar) in the
<section>element, and everything still runs fine - But if I remove the
<section>element, the app doesn't run.
I'm baffled, any help?
You are probably not using the configuration?
If you are not using it, it will only do a check if the root nodes are registered via configSections but it will not look at the details at that point.
When you will actually load it using ConfigurationManager.GetSection the settings will be validated and in your case of this configuration it will trigger an exception telling that the required YourAge property is missing.
加载中,请稍侯......
精彩评论