IIS 7.0 Windows Server 2008R264ビットにWebアプリをインストールしました。oracle.DataAccess.dllを参照しています。アプリケーションにアクセスしようとすると、次のメッセージが表示されます。「ファイルまたはアセンブリ'Oracle.DataAccess'またはその依存関係の1つを読み込めませんでした。誤った形式のプログラムを読み込もうとしました。」誰か助けてもらえますか?
10 に答える
「11.2リリース3(11.2.0.2.1)withXcopyDeployment」バージョンを使用したOracleDataAccessComponentのインストールプロセスが壊れているようです。これを修正するには、不足しているアセンブリをGACに登録する必要があります。この特定のバージョンでこれを行うには、管理者コンソール内から次のコマンドを実行します。
md C:\Windows\assembly\GAC_32\Oracle.DataAccess\4.112.2.0__89b483f429c47342\
copy %ORACLE_HOME%\odp.net\bin\4\Oracle.DataAccess.dll C:\Windows\assembly\GAC_32\Oracle.DataAccess\4.112.2.0__89b483f429c47342\
md C:\Windows\assembly\GAC_32\Oracle.Web\4.112.2.0__89b483f429c47342\
copy %ORACLE_HOME%\asp.net\bin\4\oracle.web.dll C:\Windows\assembly\GAC_32\Oracle.Web\4.112.2.0__89b483f429c47342\
これはDLLのみを登録し、他の言語リソースは登録しないことに注意してください。したがって、英語以外の言語(de、es、fr、it、ja、ko、pt-BR、zh-CHS、およびzh-CHT)を使用している場合は、対応するリソースを使用してこれらも登録する必要があります。ファイル。
Visual Studioがマシンにインストールされている場合は、代わりに次のコマンドを発行できます。
gacutil /i %ORACLE_HOME%\odp.net\bin\4\Oracle.DataAccess.dll
gacutil /i %ORACLE_HOME%\asp.net\bin\4\oracle.web.dll
注:VisualStudioのインストールフォルダーでgacutil.exeを探してください。
お役に立てれば。
PSまたはあなたはこれを試すことができます。
アプリケーションプールの「32ビットアプリケーションを有効にする」をtrueに設定することで、GACに11.2リリース5アセンブリを登録することを避けました。
AppPoolで32ビットアプリケーションを有効にする必要がある場合があります。
GAC utilを使用して、そのdllをライブサーバーに登録する必要があります。また、binフォルダに存在するかどうかも確認してください。binディレクトリにdllがない場合、同じエラーが発生することがあります
私の場合、VS 2010、Oraclev1164ビットを使用しています。64ビットモード(Webプロジェクト構成で「任意のCPU」モードに設定)で公開し、本番サーバーのIISを32ビット互換性をfalseに設定する場合があります(サーバーが64ビットであり、それを利用したいため) )。
次に、「ファイルまたはアセンブリ'Oracle.DataAccess'を読み込めませんでした」という問題を解決するには(「コンパイラエラーメッセージ:CS1705:アセンブリ」エラーが表示される場合があります)。
- ローカルPCとサーバーには、Oracle v11、64ビットがインストールされています。
- すべてのローカル開発PCで、64ビットのOracle.DataAccess.dll(C:\ app \ user \ product \ 11.2.0 \ client_1 \ odp.net \ bin \ 4)を参照します。
- IIS Production Serverで、32ビットの互換性をFalseに設定しました。
- System.Web.Mvc.dllのWebプロジェクトでの参照は、ローカルPCのバージョンv3.0.0.1でしたが、本番環境ではMVCバージョン3.0.0.0のみがインストールされています。そのため、修正は3.0.0.1ではなくMVC 3.0.0.0でローカルに機能し、サーバーで再度公開され、機能します。
次の場所から64ビットODAC11.2リリース3(11.2.0.2.1)Xcopy forWindowsx64をインストールします。
http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html
私のためにそれを修正しました。readmeファイルの手順4に従って、システムパスを更新してください。
George Netuによって公開された受け入れられた回答は、私の問題を解決するのに役立ちましたが、いくつかの追加の些細なことをいじる必要がありました。
問題の説明:
C:\ Windows \ assemblyの下に、2つのOracle.DataAccessアイテム(GACフォルダー?)が見つかりました。いくつかのOracleクライアントのインストールが原因で発生した遺棄。1つのアイテムはバージョン2.112.1.0を示していましたが、実際にはバージョン2.121.2.0でした([プロパティ]-> [バージョン]で表示)。その矛盾がバグでした。
最初の役に立たない試み:
- Runtime/Administratorの両方のバージョンでOracleフルクライアントをアンインストールして再インストールしようとしました
- 正しい.dllを再デプロイしようとしました
- コマンドプロンプトを介して上記の受け入れられた回答に記載されているように、GACサーバー時間に新しくインストールされたアセンブリをコピーしようとしました(ただし、バージョンの不一致は解決されませんでした)。
- 使用してみました
gacutil /i ...
最終的な成功:
Gacutil.exe msdnページにアクセスし、最終的にC:\ Windows\assemblyフォルダーからアイテムを削除することができました。
gacutil /u Oracle.DataAccess, Version=2.112.1.0, Culture="Neutral",PublicKeyToken=45e343aae32233ca
gacutil /u Oracle.DataAccess, Version=2.212.2.0, Culture="Neutral",PublicKeyToken=45e343aae3223abc
gacutil /u Oracle.Web, Version=2.112.1.0, Culture="Neutral",PublicKeyToken=45e343aae3223def
その後、2つのgacutil /i ...
コマンドを繰り返したところ、2つのdllが一貫したバージョンで表示されました。
最後にIISを再起動すると、動作します。
ええ、それは私が時々直面した非常に厄介な問題です。主な問題は、Webアプリケーションが64ビットではなく32ビットのOracle.DataAccess.dllを誤って使用していること、またはその逆の場合です。それにはいくつかの解決策があります。
1.アプリケーションが64ビットで、32ビットのOracle.DataAccess.dllを実行する必要がある場合は、アプリケーションプールで32ビットアプリケーションを有効にします。
IISに移動し、アプリケーションプールの[詳細設定]で[32ビットアプリケーションを有効にする]オプションをtrueに設定します。
2.参照dllを修正します。
参照パスは、Oracleインストール・プロセスによって構成されたシステム参照パスであると想定されています。ただし、新しいOracleバージョンのインストールまたは更新、最新のDLLが古いDLLを更新しない、パスが変更される、またはWebアプリケーションプロジェクトで参照が更新されないなどの場合があります。したがって、Oracle.DataAccess参照を手動で修正する必要があります。
Webアプリケーションに移動し、Oracle.DataAccess参照を削除します。そして、Oracle.DataAccessの新しい参照を追加します。Oracleインストールパスからの正しいOracle.DataAccess.dllである必要があります。例えば:
C:\ Oracle \ product \ 12.2.0 \ client_1 \ odp.net \ bin \ 4 \ Oracle.DataAccess.dll
ODP.NETと依存アンマネージDLLの不一致正しいバージョンのアンマネージDLLでOracle.DataAccess.dllアセンブリの使用を強制するために、Oracle.DataAccess.dllが依存アンマネージDLLの不一致バージョンをロードしたことに気付いた場合、例外が発生します。 。
https://docs.oracle.com/cd/E11882_01/win.112/e23174/InstallODP.htm#ODPNT152
3.問題を修正する簡単で迅速な方法(ただし、適切な解決策ではありません)は、Oracleインストールパス(例:C:\ Oracle \ product \ 12.2.0 \ client_1 \ odp)からコピーしたOracle.DataAccess.dllファイルを直接オーバーライドすることです。 .net \ bin \ 4 \)をWebアプリケーションのBinフォルダに移動します。
これが少しお役に立てば幸いです。幸運を。
私も同じ問題を抱えていました。
一般セクションのプロジェクトプロパティに移動し、プラットフォームターゲットを64ビット(x64)に設定すると、問題が解決しました