web-dev-qa-db-ja.com

OracleODP.NETエラー

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を簡単に無効にする方法はありますか?他のプロジェクトで使用しているので、そのクライアントをインストールしたくありません。

ありがとう

9
dawriter

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構成ファイルに移動する必要があります。

お役に立てば幸いです。

11
Alex R.

ASP.NetMVCプロジェクトでも同じエラーが発生していました。プロジェクトのOracle.manageddataaccess.clientWeb.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.3Web.configがあり、Version=4.122.1.0machine.configがありました。

Version=4.122.1.0の両方のバージョン(Oracle.manageddataaccess.client with 4.122.18.3machine.configを置き換え)を更新し、問題を解決しました。

1
Yasir Arafat

私の場合、複数のプロジェクトがあります。 1つはEntityFrameworkデータモデル、もう1つはEFモデルを使用するWCFサービス、WCFサービスを使用するWPFプロジェクト、そして最後に、EntityFrameworkデータモデルを直接使用する私のASP.NETMVCプロジェクトです。 Oracleを使用し、NugetパッケージOracle.manageddataがありました。 ASPプロジェクト(バージョン12.1.22)を除く他のすべてでバージョン12.1.21を使用しました。他のプロジェクトが使用しているものにダウングレードした後、私のWeb ASPが再び実行されています。同じソリューションで、さまざまなプロジェクトで異なるNugetバージョンを使用することは、それほど良い考えではないようです。

0
Ryno Potgieter