读取配置时出错:无法加载类型..来自程序集';System.Configuration

本文关键字:程序集 Configuration System 类型 出错 配置 加载 读取 | 更新日期: 2023-09-27 17:57:50

我不知所措。。。调用时出错

 var mySettings = ListOfOrgs.GetSettings();

未能从程序集"System.Configuration,Version=4.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a"加载类型"DetailedFaxByMonthByOrg.ListOfOrgsSection"。":"DetailedFaxByMonthByOrg.ListOfOrgsSection"}

有人能帮忙吗?

配置:

<?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <configSections>
          <section name="ListOfOrgs" type="DetailedFaxByMonthByOrg.ListOfOrgsSection"/>
      </configSections>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
        </startup>

      <ListOfOrgs>
        <Settings>
          <add name="myComp" userIds="12345,123475" GBuserIds="99999"></add>
          <add name="myComp2" userIds=" 58795,25362" GBuserIds="254300, 956482"></add>
        </Settings>
      </ListOfOrgs>
    </configuration>

代码:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DetailedFaxByMonthByOrg
{
    public class ListOfOrgs
    {
        public static ListOfOrgsSection _Config = ConfigurationManager.GetSection("ListOfOrgs") as ListOfOrgsSection;
        public static SettingsElementCollection GetSettings()
        {
            return _Config.Settings;
        }
    }
    public class ListOfOrgsSection : ConfigurationSection
    {
        [ConfigurationProperty("Settings")]
        public SettingsElementCollection Settings
        {
            get { return (SettingsElementCollection)this["Settings"]; }
        }
    }
    [ConfigurationCollection(typeof(OrgElement))]
    public class SettingsElementCollection : ConfigurationElementCollection
    {
        public OrgElement this[int index]
        {
            get { return (OrgElement)BaseGet(index); }
            set
            {
                if (BaseGet(index) != null)
                    BaseRemoveAt(index);
                BaseAdd(index, value);
            }
        }
        protected override ConfigurationElement CreateNewElement()
        {
            return new OrgElement();
        }
        protected override object GetElementKey(ConfigurationElement element)
        {
            return ((OrgElement)element).Name;
        }
    }
    public class OrgElement : ConfigurationElement
    {
        public OrgElement() { }
        [ConfigurationProperty("name", DefaultValue = "", IsKey = true, IsRequired = true)]
        public string Name
        {
            get { return (string)this["name"]; }
            set { this["name"] = value; }
        }
        [ConfigurationProperty("userIds", DefaultValue = "", IsRequired = true)]
        public string userIds
        {
            get { return (string)this["userIds"]; }
            set { this["userIds"] = value; }
        }
        [ConfigurationProperty("GBuserIds", DefaultValue = "", IsRequired = true)]
        public string GBuserIds
        {
            get { return (string)this["GBuserIds"]; }
            set { this["GBuserIds"] = value; }
        }
    }
}

读取配置时出错:无法加载类型..来自程序集';System.Configuration

根据文档:

<section 
   name="section name"
   type="configuration section handler class, assembly file name, version, culture, public key token"
 .....
 />

将configSection定义更新为

<section name="ListOfOrgs" type="DetailedFaxByMonthByOrg.ListOfOrgsSection, DetailedFaxByMonthByOrg">

它在错误的程序集中查找