Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

System.Configuration.ConfigurationErrorsException - Unrecognized element 'setting'

Unrecognized element 'setting'. (C:\Dev\DOT.NET\AutoPay\ibeam.config line 15)

AppInfo.Sections.Get("AutoPay.Common.Credentials") 'AppInfo.Sections.Get("AutoPay.Common.Credentials")' threw an exception of type 'System.Configuration.ConfigurationErrorsException' System.Configuration.ConfigurationSection {System.Configuration.ConfigurationErrorsException}

My config file:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
<sectionGroup name="AppInfo" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
  <section name="AutoPay.Common.Credentials" 
           type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" 
               allowExeDefinition="MachineToLocalUser" 
               requirePermission="false" />
    </sectionGroup>
  </configSections>

  <AppInfo>
    <AutoPay.Common.Credentials>
      <setting name="UserName" serializeAs="String"><value>********</value></setting>
      <setting name="Password" serializeAs="String"><value>********</value></setting>
      <setting name="ServiceUrl" serializeAs="String"><value>********</value></setting>
    </AutoPay.Common.Credentials>
  </AppInfo>
</configuration>

Base (abstract) class:

public abstract class BaseConfigInfo : ConfigurationSectionGroup
{
    protected Configuration Configuration;
    protected ConfigurationSectionGroup AppInfo;
    protected ClientSettingsSection Credentials;

    protected BaseConfigInfo(string configFile)
    {
        var fileMap = new ConfigurationFileMap(configFile);
        Configuration = ConfigurationManager.OpenMappedMachineConfiguration(fileMap);
        AppInfo = Configuration.GetSectionGroup("AppInfo");

        // THIS IS WHERE THE ERROR POPS //
        Credentials = (ClientSettingsSection)AppInfo.Sections.Get("AutoPay.Common.Credentials");
    }

    protected string GetCredentialsString(string kvpName)
    {
        var setting = Credentials.Settings.Get(kvpName);
        return setting.Value.ValueXml.InnerText;
    }

    public string UserName { get { return GetCredentialsString("UserName"); } }
    public string Password { get { return GetCredentialsString("Password"); } }
    public string ServiceUrl { get { return GetCredentialsString("ServiceUrl"); } }
}

Sample concrete class:

public class ConfigInfoIbeam : BaseConfigInfo
{
    public ConfigInfoIbeam() : base(ConfigurationManager.AppSettings["ConfigInfoIbeam"]) { }
}

I know I am missing something simple here. I'm running in .NET 4. Nothing too usefull showing up when I try to google for this error. Any ideas?

like image 785
Keith Barrows Avatar asked Jun 23 '26 20:06

Keith Barrows


1 Answers

I found the problem. In my config I had this:

  <AppInfo>
    <AutoPay.Common.Credentials>
      <setting name="UserName" serializeAs="String"><value>********</value></setting>
      <setting name="Password" serializeAs="String"><value>********</value></setting>
      <setting name="ServiceUrl" serializeAs="String"><value>********</value></setting>
    </AutoPay.Common.Credentials>
  </AppInfo>

I changed it to:

  <AppInfo>
    <AutoPay.Common.Credentials>
      <setting name="UserName" serializeAs="String">
        <value>********</value>
      </setting>
      <setting name="Password" serializeAs="String">
        <value>********</value>
      </setting>
      <setting name="ServiceUrl" serializeAs="String">
        <value>********</value>
      </setting>
    </AutoPay.Common.Credentials>
  </AppInfo>

Don't ask me why the underlying xml reader cannot differentiate between the two. However, problem solved! grrrr...

like image 104
Keith Barrows Avatar answered Jun 25 '26 14:06

Keith Barrows



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!