8

string constr = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=spp01)(PORT=1521))(CONNECT_DATA=(SID=Global)));ユーザー

Id=SYSMAN;Password=testman3"; string ProviderName = "Oracle.DataAccess.Client";

        DbProviderFactory factory = DbProviderFactories.GetFactory(ProviderName);

コンソールと winforms アプリケーションで oracle に接続できます。上記のコードは別のクラス ライブラリにあります。64 ビット ODAC をインストールしました。

ORACLE.DATAACCESS は 2.x ver 2.112.3.0 に設定されています。machine.config エントリ Framework64 v2.0.50727 および v4.0.30319 を確認しました

type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=2.112.3.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />

CPU = 任意の CPU フレームワーク = 3.5

ASP.net のクラス ライブラリから同じコードを呼び出すと、次のエラーが発生します。

ここに画像の説明を入力 System.ArgumentException はユーザー コードによって処理されませんでした。メッセージ = 要求された .Net Framework データ プロバイダーが見つかりません。インストールされていない可能性があります。ソース = System.Data StackTrace: System.Data.Common.DbProviderFactories.GetFactory (文字列 providerInvariantName) で

32 ビット アプリケーションを許可するように apppool を設定しました。

このエラーを解決するにはどうすればよいですか?

4

4 に答える 4

8

このエラーは、Oracle クライアントがシステムにインストールされていないことを示しています。それを検証するには、以下のコード行を実行できます。

System.Data.Common.DbProviderFactories.GetFactoryClasses()

インストールされているすべてのデータ プロバイダーの DataTable を取得します。Oracle.DataAccess.Client invarient が DataTable にリストされていない場合は、インストールされていないことを意味します。

また、クライアント マシンの 1 つで同じ問題に直面していましたが、デバッグ中に、Oracle クライアントが管理者ユーザーからインストールされ、他のユーザーからアクセスしようとしていることがわかりました。

現在のユーザーから Oracle クライアントをインストールすると、問題が解決します。

Oracle クライアントをインストールした後、アプリケーションを再起動することを忘れないでください。

于 2013-12-16T08:57:36.347 に答える
0

これは、Oracle クライアントをデータベースとして使用するすべての .NET 開発者が直面する一般的な問題の 1 つです。

覚えておくべきポイント:

  • Oracle から Oracle ODAC をインストールしたことを確認します。
  • Oracle.DataAccess が正しくインストールされているかどうかを確認します:(Oracle.DataAccess は DbProviderFactories セクションにある必要があります)
    • C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
    • C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
  • Oracle 32 ビットがインストールされている場合は、32x でアプリケーションを構築していることを確認してください。
  • 32bit/64bit システムと 32bit/64bit アプリケーションを持っていても。machine.config の DbProviderFactories と同じ Oracle.Database DLL バージョンを参照する必要があります。

参照用のスクリーンショット

machine.config の OracleDatabase

クイックリンク:

于 2018-03-29T17:56:14.870 に答える