3

Oracle 11g データベースに接続する Entity Framework を使用して、いくつかの非常に単純な linq クエリを使用する Web サービスを実装しました。これは、Visual Studio でローカルに実行しても問題なく動作します。この Web サービスを開発ボックスにデプロイすると、機能しません。最初に、次のエラーが発生しました。

指定されたストア プロバイダーが構成内に見つからないか、無効です。

私はいくつかの調査を行い、このエントリを持つように web.config (または machine.config) を変更することに関するいくつかの投稿を読みました:

  <system.data>
<DbProviderFactories>
  <add name="Oracle Data Provider for .NET" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>

私はそれをweb.configに入れることにしました。それを行った後、エラーが発生し始めました:

ファイルまたはアセンブリ 'Oracle.DataAccess, Version=2.0.50727, Culture=neutral, PublicKeyToken=89b483f429c47342' またはその依存関係の 1 つを読み込めませんでした。見つかったアセンブリのマニフェスト定義がアセンブリ参照と一致しません。(HRESULT からの例外: 0x80131040)

次に、サーバーに odp.net をインストールすることにしました。その後、エラーが発生し始めました:

system.data の構成セクション ハンドラーの作成中にエラーが発生しました: 列 'InvariantName' は一意に制限されています。値「Oracle.DataAccess.Client」はすでに存在します。(D:\Duke\SmartGridWS\web.config 107行目)

もちろん、これにより machine.config を確認するようになりました。確かに、odp.net インストールは同じエントリを machine.config に入れました。そのため、重複した web.config エントリを削除したところ、次のエラーが発生しました。

基になるプロバイダーが Open で失敗しました。

これが私の web.config の接続文字列エントリです。

<add name="Entities" connectionString="metadata=res://*/EDMS.csdl|res://*/EDMS.ssdl|res://*/EDMS.msl;provider=Oracle.DataAccess.Client;provider connection string=&quot;DATA SOURCE=EDMSPT01;PASSWORD=*redacted*;USER ID=*redacted*&quot;" providerName="System.Data.EntityClient" />

ここでかなり困惑しました。ここで何が起こっているかを知っているウィザードへの狂気の小道具。

4

0 に答える 0