C# – An error occurred creating the configuration section handler

asp.netcc#-4.0unity-containerweb.config

I have a dot.NET 4.0 web application with a custom section defined:

<configuration>
    <configSections>
    <section name="registrations" type="System.Configuration.IgnoreSectionHandler, System.Configuration, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="true" restartOnExternalChanges="true" allowLocation="true"/>
    ....

at the end of the web.config file I have the respective section:

  ....
  <registrations>
    .....
  </registrations>
</configuration>

Every time I call System.Configuration.ConfigurationManager.GetSection("registrations"); I get the following exception:

An error occurred creating the configuration section handler for registrations: The given assembly name or codebase was invalid. (Exception from HRESULT: 0x80131047) (C:\…\web.config line 13)

I'm also using Unity but don't know if that's in any way related to the error.

Have you faced this error before? How can I fix it? Do I need to replace the IgnoreSectionHandler with something else?

Best Answer

Given this app.config:

<?xml version="1.0"?>
<configuration>
    <configSections>
        <section name="registrations" type="MyApp.MyConfigurationSection, MyApp" />
    </configSections>
    <registrations myValue="Hello World" />
</configuration>

Then try using this:

namespace MyApp
{
    class Program
    {
        static void Main(string[] args) {
            var config = ConfigurationManager.GetSection(MyConfigurationSection.SectionName) as MyConfigurationSection ?? new MyConfigurationSection();

            Console.WriteLine(config.MyValue);

            Console.ReadLine();
        }
    }

    public class MyConfigurationSection : ConfigurationSection
    {
        public const String SectionName = "registrations";

        [ConfigurationProperty("myValue")]
        public String MyValue {
            get { return (String)this["myValue"]; }
            set { this["myValue"] = value; }
        }

    }
}