2003 서버를 아무렇지도 않게 잘 쓰다 2008 서버로 마이그레이션하고 사이트를 돌리면 어느순간
"ActiveX 구성요소는 개체를 작성할 수 없습니다"
이런 에러를 보게 됩니다.
에러 줄 수도 공통적으로 동일한 위치에서 나타납니다.
Set objUpload = Server.CreateObject("ABCUpload4.XForm")
Set objMsg = Server.CreateObject("CDO.Message")
다른 ASP 페이지들은 잘 실행됩니다. 유독 저 서버 오브젝트 생성 라인에서...
뭐 이런 서버사이드 컴포넌트를 호출하는데서 공통적으로 에러가 나타납니다.
소스고친것도 없는데 막막해집니다. -_____-;
원인은 2008서버가 64비트 버전이거나 윈도우 비스타, 윈도우7이 64비트 버전이기 때문입니다.
32비트 버전에서는 나타나지 않는 현상이기 때문에 흔한 현상은 아닙니다.
IIS관리자를 실행한 후 응용프로그램풀의 고급설정을 보면...
별거 없습니다. 보통 ASP에서는 새 응용프로그램풀을 만들면 기본 설정을 그냥 씁니다.
닷넷이나 웹메트릭스나 되야 이것저것 설정할게 조금 있습니다.
64비트 버전의 윈도우의 응용프로그램풀 고급설정을 보면 일반섹션에 추가된 항목이 한개 눈에 들어옵니다.
"32비트 응용 프로그램 사용", 그리고 값은 "False로 되어있습니다.
이걸 "True"로 바꾸면 에러는 사라집니다.
에러의 원인은 32비트 서버 컴포넌트가 64비트 윈도우에서는 IIS상에서 실행되지 않도록 기본 설정으로 차단이 되어있기 때문입니다.
64비트 검포넌트가 별도로 제공되는 업로드 컴포넌트나 메일 발송 처리 컴포넌트들은 64비트용 컴포넌트를 설치하면 이런 에러는 나오지 않습니다.
대체로 무료버전이나 공개된 버전의 서버용 컴포넌트들이 32비트용만 있거나... 2003 서버 시절부터 써오던 32비트용 컴포넌트를
64비트용 윈도우 서버 2008용으로 마이그레이션하면서 이런 에러가 나타나게 됩니다.
위의 "32비트 응용프로그램 사용"을 선택하면 대화상자 아래에 간단하게 설명이 나오다 맙니다만...
이 옵션을 "True"로 켜면 워커 프로세스가 WOW64모드로 실행됩니다.
별건 아니고 32비트 응용프로그램이나 컴포넌트들을 64비트 환경에서 돌아가도록 에뮬레이션을 해주는 모드입니다.
성능상 체감도 별 차이없기 때문에 옵션을 켠다고 크게 문제가 될건 없습니다.
새서버 64비트 윈도우 서버 2008을 설치할 때나 가끔 겪는 현상이나보다 에러뜰때마다 같은 내용으로 검색을 합니다.
치매도 아닌데...