我的任务是在我们的服务器上运行第三方软件,但我们只能部分访问代码,其余的只作为预编译库存在。 其中一个库引发了神秘的例外,我无法弄清楚原因。我完全忘记了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类的代码或使用配置的代码。 关于发生了什么以及如何解决这个问题的任何想法?
编辑:据说它完全按照提供的方式在公司的服务器上工作。
答案 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>