64비트 서버에서 이전 DLL을 실행하는 방법

64비트 서버에서 이전 DLL을 실행하는 방법

회사 웹사이트를 Windows 2003x86 서버에서 IIS 7.5를 실행하는 Windows 2008x64로 옮기려고 합니다.

내가 가진 문제는 이전 서버에서 잘 실행되던 모든 DLL이 이제 호출될 때마다 오류가 발생한다는 것입니다. 내가 얻는 것은 다음과 같은 일반적인 오류입니다.

서버 개체 오류 'ASP 0177: 800401f3'

Server.CreateObject 실패

/folder/scriptname.asp, 24번째 줄

800401f3

오류가 발생한 줄은 다음과 같습니다.

'23 lines of comments  
set A0SQL_DATA = server.createobject("olddllname.Data")  
'the rest of the script 

이미 32비트 모드로 설정된 앱 풀에서 해당 사이트를 실행하고 있습니다. 하지만 어쨌든 오류가 발생합니다.

누구든지 이것을 경험 했습니까? 제가 검색한 모든 정보에 제가 해야 할 일은 앱 풀을 32비트 모드에서 실행되도록 설정하는 것뿐이라고 되어 있어서 실망스럽습니다. 그렇게 했는데 여전히 작동하지 않습니다. 또 무엇을 확인할 수 있나요?

답변1

에서여기이것을 발견하면:

이 오류는 "잘못된 클래스 문자열"을 의미합니다. 즉, OLE 하위 시스템에서 이름 개체를 찾을 수 없기 때문에 CreateObject에 대한 호출이 실패했습니다. 원인은 다음과 같습니다:

결국 서버에서 regsvr32를 실행하지 않았습니다.

regsvr32를 실행했지만 오류가 보고되었습니다.

누군가가 OLE 하위 시스템이 HKEY_CLASSES_ROOT 트리 전체 또는 일부를 읽지 못하도록 방지하는 레지스트리 부분의 보안을 수정했습니다.

생성하려는 개체 이름의 철자가 틀리거나 올바르지 않습니다.

권한 문제인지 확인

또한 03에서 08로 마이그레이션할 예정이므로 IIS 역할에 있는 IIS 6 관리 호환성 추가 기능을 설치하셨습니까? 저는 IIS나 ASP 전문가가 아니므로 이것이 도움이 되기를 바랍니다.

답변2

아마도 DLL이 32비트 DLL이고 응용 프로그램 풀이 64비트에서 실행되고 있는 것 같습니다. 수행해야 할 작업은 응용 프로그램이 실행 중인 응용 프로그램 풀을 32비트 응용 프로그램 풀로 변경하는 것입니다. 다음에서 활성화32BitAppOnWin64를 참조하세요.http://www.iis.net/ConfigReference/system.applicationHost/applicationPools/add

AppPools 목록(트리 노드 선택)에서 응용 프로그램 풀을 선택하고 고급 설정을 사용하여 UI에서 이를 활성화할 수 있습니다.

관련 정보