2011-01-10 30 views
6

Windows 2008 64 비트 R2 상자에서 기존 ASP 페이지를 실행하려고합니다.클래식 ASP : C0000005 실행시 오류

처음에는 DLL을 등록 할 때 문제가있었습니다. 이제 수정되었습니다. 내가 페이지에 액세스하려고 할 때 Register DLL file on Windows Server 2008 R2

지금이 오류를 얻을

액티브 서버 페이지 오류 'ASP 0241'

CreateObject를 예외

index.asp

'(null)'의 CreateObject가 예외 C0000005를 발생 시켰습니다.

서버 개체 오류 'ASP 0177 : C0000005'

나는이 오류

액티브 서버 페이지 오류 'ASP와 끝까지 .. CreateObject를 위해 Server.CreateObject를의 코드를 변경하는 경우 0115 '예기치 않은 오류 index.asp

외부 개체에서 트랩 가능한 오류 (C0000005)가 발생했습니다. 스크립트를 계속 실행할 수 없습니다.

액세스 및 관리자 권한 등 응용 프로그램 풀이 관리되는 코드 + 클래식 모드로 설정되어 있습니다.

해결 방법이 있습니까?

+1

어떤 개체를 만들고 있습니까? – bzlm

+0

생성하려는 개체는 무엇입니까? – Sparky

+0

맞춤 개체입니다. db로부터 몇가지를 가져옵니다. DLL을 등록했습니다. 소스 코드가 없습니다. –

답변

2

당신은 ASP에서 이것을 고치지 않을 것입니다. C0000005는 액세스 위반 예외입니다. 이것은 코드가 할당하지 않은 메모리를 읽으려고 할 때 발생합니다.

dll은 개체를로드 할 때 또는 개체를 생성하는 중에 문제가 발생합니다.

dll을 간단한 .vbs 파일로 테스트 해 보셨습니까?

+1

VBS에서이 기능을 사용하려면 ASP ISAPI dll의 'bitness'와 일치하는 vbscript.exe를 사용해야합니다. – Mark

+0

이것은 정말로 흥미 롭습니다. 나는 객체를 생성하기 위해 온라인 vbs 파일을 만들었습니다. 내 자신의 디렉터리에서 실행했을 때 "(null) : 0x800700C1"이 dll과 vbs 파일을 c : \ windows \ syswow64 \에 복사하고 파일을 실행했을 때이 오류가 발생했습니다. "Microsoft console P1 : 스크립트 호스트 문제 서명 "EVENTVWR 에서"작동 중지 염기 5.8.7600.16385 P3 : 4a5bc670 P4 : StackHash_0a9e P5 : 0.0.0.0 P6 : 00000000 P7 : P2 cscript.exe를 02ca0068 P8 : c0000005 P9 : 00000008 P10 : " –

+0

@ 깨진 링크 : syswow64 폴더의 [c | w] script.exe를 특별히 사용하지 않는 한 실행했을 수 있습니다. 64 비트 버전을 보내지 만 dll은 32 비트가됩니다. C1 오류 (ERROR_BAD_EXE_FORMAT)는 그 오류에 대해 불평 할 가능성이 있습니다. 32 비트 버전의 cscript를 실행하면 ASP에서 얻는 것과 같은 오류가 발생합니다. 이것은 dll이 파손되어 수정이 필요함을 확인합니다. – AnthonyWJones

-2

당신은 "32 비트 COM 객체와 64 비트에서 작동하지 않습니다 클래식 ASP (ASP 3.0)"라는 제목의이 블로그 항목을 체크 아웃 할 수는 http://blogs.msdn.com/b/robgruen/archive/2005/05/26/422328.aspx

그것은 조금 일자와 저자가 잘못 ASP를 의미이다 처리기를 ISAPI 필터 (필터가 아닌 확장자 임)로 사용하지만 그렇지 않으면 정보가 양호한 것처럼 보입니다.

asp 처리기가 64 비트로만 컴파일 된 경우 사용자가 수행하는 작업에 관계없이 32 비트 COM 개체를로드 할 수 없습니다.

저자는 COM + 솔루션에 대해 언급합니다. 32 비트 COM + 패키지가 32 비트 COM 객체를로드 할 수 있고 ASP 페이지가이 COM + 패키지에 대한 교차 프로세스 호출을 만들 수 있다는 느낌이 들었습니다.

행운, 마크

1

나는 정확히 같은 오류를했다.

필자의 경우 C0000005 오류는 의존성이 없어서 발생했습니다.

Process Monitor가 도움을줍니다. (프로세스별로 필터링하고 "이름을 찾을 수 없음"을 확인하십시오.) Name not found on dll

올바른 위치에 필요한 파일을 복사하면 문제가 해결됩니다. (제 경우 VB6FR.dll은 vb6에 대한 의존성이 필요했습니다.)

0

나는 이것을 몇 시간 동안 쫓아갔습니다.

필자의 경우 DB 호출간에 레코드 집합 개체를 여러 번 다시 사용하지 않아서 레코드 집합 개체를 여러 번 다시 사용했기 때문에 발생했습니다. 이 코드는 몇 가지 유사한 경우에 명백한 문제없이 작동했으며 그 중 하나는 프로세스를 허용하지 않았습니다.

문제 해결이 더 어려워 진 페이지 끝 부분에서 레코드 집합을 닫으려고 할 때 오류가 발생했습니다.

코드를 정리하여 호출간에 레코드 집합이 닫히도록하고 이로 인해 문제가 해결되었습니다.

0

내 경험으로 AVG Free를 사용하고 있으며 업데이트 후에 이런 종류의 오류가 발생합니다.

0

내 자신의 com 컨트롤을 사용하려고하는 동안이 동일한 오류가 발생하여 내 경우 디버그 모드로 컴파일되는 DLL로 인해 발생합니다. 디버그 모드에서

  1. 실행 IIS :

    은 약 2 가지 방법이 있습니다. 32 비트의 경우 다음 줄을 사용하십시오. C : \ Windows \ SysWOW64 \ inetsrv> w3wp.exe -debug

    IIS 서비스를 중지하고 64 비트 시스템에서는 System32를 사용해야합니다.

  2. 는 릴리스 버전 :

0

번 이상 csv 파일 데이터가 더로드하는 동안 내가 같은 오류가 발생했다를 컴파일합니다. 1 단계 - 먼저 csv 데이터를 임시 테이블로 전송할 임시 테이블을 만든 다음 데이터가 이동되면 임시 테이블을 삭제하고 주 테이블로 이동합니다. 이것은 프로그래밍 방식으로 수행되어야합니다.

2 단계 - mysql으로 이동하여 데이터베이스를 선택하고이 쿼리 (SHOW FULL PROCESSLIST;)를 사용하여 브래킷없이 사용합니다. 이것은 당신에게 실행중인 객체의 상태를 보여줄 것입니다. "Sleep"상태를 가진 객체를 발견하면 파일을 두 번째로 업로드하기 전에이 객체를 지워야합니다. 일반적으로 기본 대기 시간은 약 28000 초입니다. 요구 사항에 따라 줄여야합니다. 대기 시간을 줄이기위한 코드는 (SET GLOBAL wait_timeout = 5;)입니다. 브래킷없이 사용하십시오. 이것을 사용하는 것은 mysql입니다. 그러면 글로벌 대기 시간이 5 초로 재설정됩니다 (필요에 따라 변경). 이렇게하면 문제가 해결됩니다. 모두 제일 좋다.