VS 2012 Web ProjectUpがあります。 Oracle Workshopであるため、ODP.NETをインストールしています。 Oracle.ManagedAccess.DataとEFを使用するプロジェクトを継承しました。
VS 2012でプロジェクトを実行すると、次のエラーが発生します。
There is a duplicate 'Oracle.manageddataaccess.client' section defined..
解決策は、web.configで次の行を無効にすることでした
<!--<section name="Oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />-->
それは大丈夫だった。プロジェクトはコンパイルされましたが、データベースを読み取らなければならない場所でパスワードを取得するなどの簡単なコマンドを実行すると、別のエラーが発生しました。
System.Data.ConstraintException: Column 'InvariantName' is constrained to be unique. Value 'Oracle.ManagedDataAccess.Client' is already present.
これで、エラーがODP.NETによってトリップされ、GACに存在するため、二重エラーが報告されることに気付きました。
コメントアウトする必要がある別の行がありますか、またはODP.NETを簡単に無効にする方法はありますか?他のプロジェクトで使用しているので、そのクライアントをインストールしたくありません。
ありがとう
Oracleサイト「重複する「Oracle.manageddataaccess.client」セクションが定義されています。」に関して次のことがわかりました。
アプリケーションがWebアプリケーションであり、上記のエントリがweb.configに追加され、「Oracle.manageddataaccess.client」の同じ構成セクションハンドラがmachine.configにも存在するが、「Version」属性値が異なる場合、エラーが発生します。 「重複する「Oracle.manageddataaccess.client」セクションが定義されています。」というメッセージ実行時に観察される場合があります。その場合、このエラーが発生しないようにするには、「Oracle.manageddataaccess.client」のmachine.configのconfigセクションハンドラエントリをmachine.configから削除する必要があります。ただし、machine.configのこのエントリに依存する他のアプリケーションがマシン上にある可能性があるため、このconfigセクションハンドラエントリは、それに依存するそのマシン上のアプリケーションのすべての.NET構成ファイルに移動する必要があります。
お役に立てば幸いです。
ASP.NetMVCプロジェクトでも同じエラーが発生していました。プロジェクトのOracle.manageddataaccess.client
のWeb.config
と、machine.config
のバージョンの不一致があることがわかりました。
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config, and
C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config.
Version=4.122.18.3
にWeb.config
があり、Version=4.122.1.0
にmachine.config
がありました。
Version=4.122.1.0
の両方のバージョン(Oracle.manageddataaccess.client with 4.122.18.3
のmachine.config
を置き換え)を更新し、問題を解決しました。
私の場合、複数のプロジェクトがあります。 1つはEntityFrameworkデータモデル、もう1つはEFモデルを使用するWCFサービス、WCFサービスを使用するWPFプロジェクト、そして最後に、EntityFrameworkデータモデルを直接使用する私のASP.NETMVCプロジェクトです。 Oracleを使用し、NugetパッケージOracle.manageddataがありました。 ASPプロジェクト(バージョン12.1.22)を除く他のすべてでバージョン12.1.21を使用しました。他のプロジェクトが使用しているものにダウングレードした後、私のWeb ASPが再び実行されています。同じソリューションで、さまざまなプロジェクトで異なるNugetバージョンを使用することは、それほど良い考えではないようです。