如何解决这个奇怪的ConfigurationSection异常?

时间:2014-05-17 03:34:53

标签: c# visual-studio-2010 configuration app-config configuration-files

我的任务是在我们的服务器上运行第三方软件,但我们只能部分访问代码,其余的只作为预编译库存在。 其中一个库引发了神秘的例外,我无法弄清楚原因。我完全忘记了Visual Studio和C#,这对我来说毫无意义。

我最初得到的是:

  

未处理的例外:

     

未处理的异常:System.TypeInitializationException:类型   ' GroupsImporter.Program'的初始化程序抛出一个例外。 --->

     

System.Configuration.ConfigurationErrorsException:配置   系统无法初始化--->

     

System.Configuration.ConfigurationErrorsException:无法识别   配置部分ThirdPartyCompany.Framework.Core.Configuration.v1.2。   (Y:\ path-to-executable \ GroupsImporter.exe.Config第67行)

     

在   System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(布尔   ignoreLocal)

     

在System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors)   schemaErrors)

     

在System.Configuration.ClientConfigurationSystem.EnsureInit(String   configKey)

     

---内部异常堆栈跟踪结束---

配置文件如下所示:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <section name="AdWordsApi" type="System.Configuration.DictionarySectionHandler"/>
        <section name="AdWords.Common.Configuration" type="AdWords.Common.Configuration.AdWordsConfiguration, AdWords.Common"/>
    </configSections>

    <appSettings>
        ...
    </appSettings>

    <AdWords.Common.Configuration Budget ="xxx" CPC="xxx" EstoqueMinimo="x">
        ...
    </AdWords.Common.Configuration>

    <AdWordsApi>
        ...
    </AdWordsApi>

    <system.web>
        ...
    </system.web>

    <system.net>
        ...
    </system.net>

    <ThirdPartyCompany.Framework.Core.Configuration.v1.2>
        ...
    </ThirdPartyCompany.Framework.Core.Configuration.v1.2>
</configuration>

反过来,如果我删除它正在抱怨的部分,我明白了:

  

未处理的异常:System.TypeInitializationException:类型   &#39; GroupsImporter.Program&#39;的初始化程序抛出一个例外。 ---&GT;

     

System.Configuration.ConfigurationException:配置部分   ThirdPartyCompany.Framework.Core.Configuration.v1.2不可能   找到。

     

at ThirdPartyCompany.Framework.Core.Guard.Against [TException](布尔值   断言,字符串消息)

     

在   ThirdPartyCompany.Framework.Core.Configuration.ConfigurationSection.GetConfiguration()

     

在   ThirdPartyCompany.Framework.Core.IoCContainerWrapper.Implementation.IoCThirdPartyCompanyContainer.loadRegisterConfiguration()

     

//堆栈继续......

我不知道如何解决这个问题。我无法访问实现ServiceConfig类的代码或使用配置的代码。 关于发生了什么以及如何解决这个问题的任何想法?

编辑:据说它完全按照提供的方式在公司的服务器上工作。

3 个答案:

答案 0 :(得分:1)

IIRC,您需要将该部分添加到configSections标记。

所以,就像这个:

<section name="AdWordsApi"

...但你还需要:

<section name="ThirdPartyCompany.Framework.Core.Configuration.v1.2" ...

答案 1 :(得分:1)

您必须确保引用这些库或询问哪个库实现了该类&#34; ConfigurtionSection&#34;系统抱怨的。

无法发布答案:是的,据我所知,唯一可以添加自定义配置部分(不是app键)的方法是继承ConfigurationSection类

答案 2 :(得分:0)

我有一个不同的dll同样的错误,消息是:
“无法识别的配置部分AdWordsApi”

我修复了使用nuget console重新安装AdWordsApi的参考资料。

从Nuget Package Manager控制台执行:
Install-Package Google.AdWords

它将重新安装软件包并在app.config中添加以下代码

  <configSections>
    <section name="AdWordsApi" type="System.Configuration.DictionarySectionHandler" />  
  </configSections>