programing

파일 또는 어셈블리 'Oracle'을 로드할 수 없습니다.DataAccess' 또는 해당 종속성 중 하나입니다.잘못된 형식의 프로그램을 로드하려고 했습니다.

css3 2023. 7. 29. 08:47

파일 또는 어셈블리 'Oracle'을 로드할 수 없습니다.DataAccess' 또는 해당 종속성 중 하나입니다.잘못된 형식의 프로그램을 로드하려고 했습니다.

IIS 7.0 윈도우즈 서버 2008 R2 64비트에 웹 앱을 설치했습니다.나는 신탁을 말하는 것입니다.DataAccess.dll; 응용 프로그램에 액세스하려고 하면 "Could not load file or assembly 'Oracle.DataAccess' 또는 해당 종속성 중 하나입니다.잘못된 형식의 프로그램을 로드하려고 했습니다."누가 저를 도와주실 수 있나요?

Xcopy Deployment 버전이 있는 "11.2 릴리스 3(11.2.0.2.1)"을 사용하는 Oracle Data Access 구성 요소 설치 프로세스가 중단된 것 같습니다.이 문제를 해결하려면 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

참고: 가쿠틸을 찾습니다.Visual Studio 설치 폴더 아래에 exe를 입력합니다.

이게 도움이 되길 바랍니다.

추신. 아니면 이거 한번 드셔보세요.

응용 프로그램 풀에 대해 "32비트 응용 프로그램 사용"을 true로 설정하여 GAC에 11.2 릴리스 5 어셈블리를 등록하지 않았습니다.

AppPool에서 32비트 응용 프로그램을 활성화해야 할 수 있습니다.

http://www.alexjamesbrown.com/development/could-not-load-file-or-assembly-chilkatdotnet2-or-one-of-its-dependencies-an-attempt-was-made-to-load-a-program-with-an-incorrect-format/

GAC 유틸리티를 사용하여 해당 dll을 라이브 서버에 등록해야 합니다.또한 그것이 bin 폴더에 있는지 확인합니다.때때로 dll의 inbin 디렉토리가 누락되면 동일한 오류가 발생함

저의 경우 VS 2010, Oracle v11 64비트를 사용합니다.64비트 모드(웹 프로젝트 구성에서 "Any Cpu" 모드로 설정)로 게시하고 프로덕션 서버의 IIS를 32비트 호환성으로 거짓으로 설정할 수 있습니다(서버가 64비트이며 이를 활용하고 싶기 때문).

그런 다음 "Oracle 파일 또는 어셈블리를 로드할 수 없습니다." 문제를 해결합니다.DataAccess'"(가끔 "Compiler Error Message: CS1705: Assembly" 오류가 나타납니다):

  • 로컬 PC 및 서버에 Oracle v11, 64비트가 설치되어 있습니다.
  • 모든 Local Dev PCI에서 Oracle을 참조합니다.64비트인 DataAccess.dll(C:\app\user\product\11.2.0\client_1\odp.net \bin\4).
  • IIS 운영 서버에서 32비트 호환성을 False로 설정했습니다.
  • 시스템의 웹 프로젝트에 있는 참조입니다.Web.Mvc.dll은 로컬 PC에서 버전 v3.0.0.1이었지만 프로덕션에서는 MVC 버전 3.0.0만 설치됩니다.따라서 이 수정은 3.0.0.1이 아닌 MVC 3.0.0에서 로컬로 작동하고 서버에 다시 게시하여 작동합니다.

Windows x64용 64비트 ODAC 11.2 릴리스 3(11.2.0.2.1) Xcopy 설치 위치:

http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html

고쳐줬어요.readme 파일의 4단계에 따라 시스템 경로를 업데이트해야 합니다.

조지 네투가 발표한 수락된 답변은 제 문제를 해결하는 데 도움이 되었지만, 저는 몇 가지 추가적인 사소한 일들을 처리해야 했습니다.

문제 설명:

C 아래:\Windows\assembly에서 두의 Oracle을 찾았습니다.데이터 액세스 항목(GAC 폴더?).여러 Oracle 클라이언트 설치로 인해 발생하는 Relict.한 항목은 버전 2.112.1.0을 표시했지만 실제로는 버전 2.121.2.0(속성->버전을 통해 표시)이었습니다.그 모순이 문제였습니다.

도움이 되지 않는 첫 번째 시도:

  • Runtime/Administrator 버전 모두에서 Oracle 전체 클라이언트를 제거하고 다시 설치하려고 했습니다.
  • 올바른 .dll을 다시 배포하려고 했습니다.
  • 명령 프롬프트를 통해 위의 수락된 답변에 명시된 대로 GAC에 새로 설치된 어셈블리를 여러 번 복사하려고 했지만 버전 불일치가 해결되지 않았습니다.
  • 사용하려고 했습니다.gacutil /i ...

최종 성공:

저는 가쿠틸에 착륙했습니다.exmsdn 페이지에서 항목을 삭제할 수 있었습니다.\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

그 후, 저는 두 가지를 반복했습니다.gacutil /i ...명령과 두 개의 dll은 일관된 버전으로 나타났습니다.

드디어 IIS를 다시 시작했습니다. 작동합니다.

네, 제가 가끔 직면했던 꽤 성가신 문제입니다.주요 문제는 웹 애플리케이션이 32비트 오라클을 잘못 사용한다는 것입니다.64비트 대신 DataAccess.dll 또는 그 반대의 경우.그것을 위한 몇 가지 해결책이 있습니다.

애플리케이션이 64비트이고 32비트 Oracle을 실행해야 하는 경우 애플리케이션 풀에서 32비트 애플리케이션을 활성화합니다.DataAccess.dll.

IIS로 이동하여 응용프로그램 풀의 고급 설정에서 "32비트 응용프로그램 사용" 옵션에 대해 true를 설정합니다.

참조 dll을 수정하는 중입니다.

참조 경로는 Oracle 설치 프로세스에 의해 구성된 시스템 참조 경로여야 합니다.그러나 새 Oracle 버전을 설치 또는 업데이트하거나 최신 DLL이 이전 DLL을 업데이트하지 않거나 경로가 변경되거나 웹 응용 프로그램 프로젝트에서 참조가 업데이트되지 않는 경우도 있습니다.따라서 오라클을 수정해야 합니다.데이터 액세스 참조를 수동으로 지정합니다.

웹 응용 프로그램으로 이동하여 Oracle을 제거합니다.데이터 액세스 참조.Oracle에 대한 새 참조를 추가합니다.데이터 액세스.올바른 Oracle이어야 합니다.오라클 설치 경로의 DataAccess.dll.예:

C:\Oracle\product\12.2.0\client_1\odp.net \bin\4\오라클.DataAccess.dll

ODP.NET과 종속 관리되지 않는 DLL의 불일치 Oracle 사용을 시행합니다.올바른 버전의 관리되지 않는 DLL로 DataAccess.dll 어셈블리. Oracle인 경우 예외가 발생합니다.DataAccess.dll은 종속적인 관리되지 않는 DLL의 일치하지 않는 버전을 로드했음을 알게 됩니다.

https://docs.oracle.com/cd/E11882_01/win.112/e23174/InstallODP.htm#ODPNT152

문제를 해결하는 쉽고 빠른 방법(적절한 솔루션은 아님)은 Oracle을 직접 재정의하는 것입니다.오라클 설치 경로에서 DataAccess.dll 파일 복사(예: C:\Oracle\product\12.2.0\client_1\odp.net \bin\4\ )를 웹 응용 프로그램의 Bin 폴더에 추가합니다.

이것이 당신에게 조금이나마 도움이 되길 바랍니다.행운을 빌어요.

저도 같은 문제가 있었습니다.

일반 섹션에서 프로젝트 속성으로 이동하여 플랫폼 대상을 64비트(x64)로 설정하고 문제를 해결했습니다.

응용 프로그램 풀 ---> 고급 설정 --> 32비트 옵션 사용

이 이미지 보기

enter image description here

언급URL : https://stackoverflow.com/questions/15596834/could-not-load-file-or-assembly-oracle-dataaccess-or-one-of-its-dependencies