【问题标题】:How to fix this bizarre ConfigurationSection exceptions?如何修复这个奇怪的 ConfigurationSection 异常?
【发布时间】:2014-07-05 14:49:30
【问题描述】:

我的任务是让这个第三方软件在我们的服务器上运行,但我们只能访问部分代码,其余的仅作为预编译库存在。 其中一个库引发了神秘的异常,我不知道为什么。我完全没有使用 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(布尔值 忽略本地)

在 System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(ConfigurationSchemaErrors 架构错误)

在 System.Configuration.ClientConfigurationSystem.EnsureInit(String 配置键)

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

配置文件如下所示:

<?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:类型 “GroupsImporter.Program”的初始化程序引发了异常。 --->

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

在 ThirdPartyCompany.Framework.Core.Guard.Against[TException](Boolean 断言,字符串消息)

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

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

//堆栈继续...

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

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

【问题讨论】:

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


    【解决方案1】:

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

    所以,就像这个:

    <section name="AdWordsApi"
    

    ...但你还需要:

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

    【讨论】:

    • 我怀疑是这样,但我不知道该输入什么类型。如果我这样做但省略了我得到的类型:System.Configuration.ConfigurationErrorsException:必须在“section”标签上指定“type”属性。
    • 类型是处理该配置部分的任何类型的完全限定名称。它可能驻留在第三方程序集中。你能不参考他们的网站或文档之类的吗?
    • 哦,不是那种第三方 :) 没有任何文档。还有其他方法可以找出这种类型吗?也许可以以某种方式从库中提取符号?
    • 您只需要在程序集查看器中打开程序集并浏览,直到找到您想要的东西。您可以根据处理 AdWords 内容的类型来假设它的外观。
    • 是的,似乎是唯一的选择。谢谢西蒙。您确定这是这些异常的来源吗?
    【解决方案2】:

    您必须确保引用了这些库或询问哪个库实现了系统抱怨的“ConfigurtionSection”类。

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

    【讨论】:

    • 我的印象是他们被引用了。你有理由相信这是一个依赖问题吗?
    • 嗯...这很奇怪,因为我引用了(据我所知)所有库。也许我错过了一个?例外引用了一个我敢打赌的那个,我已经在引用它:ThirdPartyCompany.Framework.Core.Configuration.ConfigurationSection
    • @rgcalsaverini 尝试创建一个新项目,引用所有 dll 并查看它是否运行,以确保
    【解决方案3】:

    我在使用不同的 dll 时遇到了同样的错误,消息是:
    “无法识别的配置部分 AdWordsApi”

    我使用 nuget 控制台重新安装引用 AdWordsApi 来修复它。

    从 Nuget 包管理器控制台执行:
    Install-Package Google.AdWords

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

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

    【讨论】:

      猜你喜欢
      • 2020-06-27
      • 1970-01-01
      • 1970-01-01
      • 2019-03-12
      • 2011-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多