最近、クライアント マシンで次のエラーが発生しました。
「DbProviderFactories」セクションは、構成ファイルごとに 1 回だけ表示できます。
マシン構成に重複した 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 内の重複したエントリをおそらく無視することで、これを回避するように試みることが求められています。これは、多くのクライアントが同じ問題を抱えている可能性があり、全員の構成ファイルを変更できないためです。
system.data セクション内に要素を追加して<clear/>
、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 はありますか?
誰かが解決策を助けたり、推奨したりできますか?
敬具