我最近在客户端计算机上遇到以下错误:
“DbProviderFactories”部分在每个配置文件中只能出现一次。
计算机配置似乎包含重复的 DbProviderFactories 元素。
<system.data>
<DbProviderFactories>
<add name="IBM DB2 for i .NET Provider" invariant="IBM.Data.DB2.iSeries" description=".NET Framework Data Provider for IBM i" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26" />
</DbProviderFactories>
<DbProviderFactories />
</system.data>
手动删除这个额外的元素可以解决问题,并且我们的软件可以运行。但是,有人要求我们尝试通过忽略我们自己的 app.config 中的重复条目来解决此问题。这是因为很多客户端可能会遇到同样的问题,我们无法修改每个人的配置文件。
我试过添加一个<clear/>
system.data 部分内的元素,希望覆盖 machine.config 中已有的内容。然而,这是行不通的。
例如
<system.data>
<clear />
<DbProviderFactories>
<add name="Microsoft SQL Server Compact Data Provider 4.0"
invariant="System.Data.SqlServerCe.4.0"
description=".NET Framework Data Provider for Microsoft SQL Server Compact"
type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
</DbProviderFactories>
</system.data>
有没有办法以编程方式忽略重复的 DbProviderFactories 元素?
是否存在允许您修改机器配置的 API?
有人可以帮忙,或者推荐一个解决方案吗?
亲切的问候