클래식 ASP/vbscript 페이지에서 .NET COM 객체를 Instanciate 할 수 없습니다 (Error ASP 0177)
-
19-09-2019 - |
문제
.NET 3.5를 사용하여 C#에서 COM Interop 활성화 클래스 라이브러리를 작성했습니다. 객체는 클래식 ASP 페이지에 대한 유틸리티 기능을 제공하기위한 것입니다. 원하는 개체를 주입하고 메소드를 호출하는 test.asp 페이지를 작성했습니다. 내 컴퓨터에서 잘 작동합니다.
다른 컴퓨터 (Windows Server 2003 -Standard Edition)에서는 어셈블리가 Regasm에 올바르게 등록되지 않으면 작동하지 않습니다. 나는 Regedit을 확인했고 Afaik은 괜찮아 보인다.
내가 얻는 오류는 "ASP 0177"(오류 코드), "8000ffff; server.createObject-fehler"(오류 설명)입니다.
BTW. 어셈블리는 서명되었으며 다른 맞춤형 빌드 어셈블리가 의존성 (시스템 재료 만)이 없습니다.
누구든지 비슷한 것을 경험 한 사람이 있습니까?
해결책
IUSR 사용자 (또는 IIS 사용자가 누구든지)를 다음 레지스트리 키로 읽는 것은 나에게 작업을 수행하고 문제를 해결했습니다.
HKEY_USERS\S-1-5-20\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones
다른 팁
보안 문제라고 생각합니다. 자신의 PC에서 구성 요소를 개발하고 테스트 한 것으로 보이며, 서버와 비교하여 많은 차이가 있습니다 (예에 따라 Visual Studio가 설치되어 있음).
편집 :이 Microsoft "Hotfixes a Hotfix"를 살펴보십시오.
- 다음 레지스트리 서브 키를 찾아서 클릭하십시오.
- 참고 기능 _ignore_zones_initialization_failure_kb945701 subkey가 존재하지 않으면 수동으로 만들어야합니다. 64 비트 OS를 사용하는 경우 hkey_local_machine 소프트웨어 wow6432node microsoft Internet Explorer main feacturecontrol feaction_ignore_zones_initialization_failure_kb945701 대신 사용해야 할 수도 있습니다.
- feaction_ignore_zones_initialization_failure_kb945701을 마우스 오른쪽 버튼으로 클릭하고 새로 가리키고 dword 값을 클릭하십시오.
- W3WP.Exe를 입력하여 새 레지스트리 항목의 이름을 지은 다음 Enter를 누릅니다.
- W3wp.exe를 마우스 오른쪽 버튼으로 클릭 한 다음 수정을 클릭하십시오.
- 값 데이터 상자에서 1을 입력 한 다음 확인을 클릭하십시오.
이 레지스트리 키를 설정하면 간단한 앱 풀 재시작이 변경 사항을 적용합니다. 더 이상 .NET COM 구성 요소는 응용 프로그램 풀을 셔플 링하는 것을 제외하고 실제 솔루션없이 무작위로 작동하지 않습니다!