IIS(인터넷 정보 시스템)에서 Oracle.DataAccess 오류 발생 원인 및 해결 방법

IIS(인터넷 정보 시스템)에 사이트를 추가해서 운영할 때 ASP.NET 응용 프로그램에서 오라클(Oracle) 데이터베이스에 연결해서 프로그램을 개발할 때가 있습니다. 그럼 당연히 Oracle.DataAccess.dll 파일을 참조해서 프로그램을 개발하게 됩니다.

참조하는 Oracle.DataAccess.dll은 32Bit용과 64Bit용으로 구분되어 제공하고 있습니다. 따라서 응용 프로그램의 플랫폼 대상에 맞는 Oracle.DataAccess.dll 파일을 참조해서 사용하게 됩니다.

Visual Studio에서 개발하는 과정에서는 전혀 오류 없이 빌드 및 실행이 되었는데  막상 실제 웹 서버에 사이트를 추가해서 접속하게 되면 ‘응용 프로그램에 서버 오류가 있습니다.‘라는 오류가 발생하는 경우가 있습니다.

자세한 오류 내용은 아래 화면과 같습니다.

파일이나 어셈블리 ‘Oracle.DataAccess’ 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 프로그램을 잘못된 형식으로 로드하려고 했습니다.

파일이나 어셈블리 'Oracle.DataAccess' 또는 여기에 종속되어 있는 파일이나 어셈블리 중 하나를 로드할 수 없습니다. 프로그램을 잘못된 형식으로 로드하려고 했습니다.


참고로 ‘프로그램을 잘못된 형식으로 로드하려고 했습니다.‘라는 오류에 대한 원인 및 해결 방법은 C# 32Bit 참조 라이브러리를 64Bit 시스템에서 빌드해서 사용 하는 방법 글을 참고하시면 도움이 됩니다.

이번 글에서는 IIS(인터넷 정보 시스템)에서 Oracle.DataAccess 오류 발생 원인 및 해결 방법에 대해 알아보겠습니다.

IIS(인터넷 정보 시스템)에서 Oracle.DataAccess 오류(프로그램을 잘못된 형식으로 로드)가 발생하는 원인

IIS(인터넷 정보 서비스)의 사이트로 접속했을 때 앞에서 기술한 ‘Oracle.DataAccess’ 오류가 발생하는 원인은 응용 프로그램에서 참조한 Oracle.DataAccess.dll 파일의 플랫폼 대상 버전과 IIS를 서비스하는 서버의 운영 체제 버전이 서로 다르기 때문에 생기는 오류입니다.

아래 화면의 비주얼스튜디오에서 정의한 플랫폼 대상은 x86 즉, 32비트로 응용 프로그램을 빌드 하고 있습니다.

당연히 Oracle.DataAccess.dll과 다른 참조 dll 파일도 32비트용을 사용해서 개발한 응용 프로그램이 됩니다.

이렇게 만들어진 웹 응용 프로그램을 64비트 운영 체제 시스템의 IIS(인터넷 정보 서비스)에 접속하게 되면 앞에서 말한 해당 오류가 발생하게 되는 것입니다.

IIS(인터넷 정보 시스템)에서 Oracle.DataAccess 오류(프로그램을 잘못된 형식으로 로드)가 발생하는 원인

IIS(인터넷 정보 시스템)에서 Oracle.DataAccess 오류(프로그램을 잘못된 형식으로 로드) 해결 방법

웹 사이트에서 참조로 사용하는 DLL 파일의 버전과 시스템 운영체제의 버전이 달라서 생기 오류이므로 버전을 서로 일치시켜 주면 오류는 해결됩니다.

응용 프로그램의 플랫폼 대상을 변경하고 참조하는 파일들도 해당 플랫폼에 맞는 DLL 파일을 찾아 다시 참조해서 빌드하고 웹 서버에 적용하면 되지만 부득이 웹 서버의 운영체제와 다를 버전을 사용해야 하는 경우가 있습니다.

아래 설명은 64비트 운영 체제의 시스템에 32비트 웹 응용 프로그램을 사용하기 위한 해결 방법입니다.

1. IIS(인터넷 정보 시스템) 관리자를 엽니다.

2. [응용 프로그램 풀]에서 오류가 발생하는 사이트의 응용 프로그램 풀을 선택합니다.

3. 우측 [작업]의 [고급 설정]을 클릭하거나 오른쪽 마우스를 클릭해서 [고급 설정]을 선택해 줍니다.

IIS(인터넷 정보 시스템)에서 Oracle.DataAccess 오류(프로그램을 잘못된 형식으로 로드) 해결 방법

4. 고급 설정의 [32비트 응용 프로그램 사용]을 “True“로 변경하고 확인해 줍니다. 디폴트는 “False”로 되어 있습니다.

  ※ “32비트 응용 프로그램 사용”이 ‘False’인 경우 운영 체제의 버전으로 실행되게 됩니다.

IIS(인터넷 정보 시스템)에서 Oracle.DataAccess 오류 발생 원인 및 해결 방법

5. 해당 응용 프로그램 풀을 [중지]했다가 다시 [시작]해 줍니다.

6. 이제 오류 없이 사이트로 접속이 잘 되는지 확인하면 됩니다.

결론

비주얼스튜디오의 대상 플랫폼을 x86(32비트)로 빌드한 응용 프로그램을 IIS에서 서비스하기 위해서는 IIS의 응용 프로그램 풀의 32비트 응용 프로그램 사용을 ‘True’로 해 주어 서로 일치시켜야 오류가 발생하지 않습니다.





이 글이 도움이 되었기를 바랍니다. ^-^
댓글로 흔적을 남겨 주세요.

답글 남기기