(연관된 글이 1개 있습니다.)
                    (시리즈 글이 15개 있습니다.)
오류 유형: 2. [COM+] CreateObject 와 HTTP 500 - Internal server error
; https://www.sysnet.pe.kr/2/0/242
오류 유형: 111. IIS - 500.19 오류 (0x8007000d)
; https://www.sysnet.pe.kr/2/0/976
오류 유형: 201. ASP.NET 웹 사이트를 IIS 7 이상의 환경에서 호스팅할 때 500 오류 발생
; https://www.sysnet.pe.kr/2/0/1563
오류 유형: 219. IIS 500 Internal Server Error - Skydrive에 공유된 경우
; https://www.sysnet.pe.kr/2/0/1612
오류 유형: 232. IIS 500 Internal Server Error - NTFS 암호화된 폴더에 웹 애플리케이션이 위치한 경우
; https://www.sysnet.pe.kr/2/0/1722
오류 유형: 340. HTTP Error 500.23 - Internal Server Error
; https://www.sysnet.pe.kr/2/0/10997
오류 유형: 360. IIS - 500.19 오류 (0x80070021)
; https://www.sysnet.pe.kr/2/0/11061
개발 환경 구성: 307. ASP.NET Core Web Application을 IIS에서 호스팅하는 방법
; https://www.sysnet.pe.kr/2/0/11120
오류 유형: 580. HTTP Error 500.0/500.33 - ANCM In-Process Handler Load Failure
; https://www.sysnet.pe.kr/2/0/12064
오류 유형: 631. .NET Core 웹 응용 프로그램 오류 - HTTP Error 500.35 - ANCM Multiple In-Process Applications in same Process
; https://www.sysnet.pe.kr/2/0/12268
오류 유형: 662. ASP.NET Core와 500.19, 500.21 오류 (0x8007000d)
; https://www.sysnet.pe.kr/2/0/12356
개발 환경 구성: 635. 비주얼 스튜디오에서 실행하던 ASP.NET Core (.NET Framework) 응용 프로그램을 명령행에서 실행하는 방법 (2)
; https://www.sysnet.pe.kr/2/0/12955
.NET Framework: 1164. HTTP Error 500.31 - ANCM Failed to Find Native Dependencies
; https://www.sysnet.pe.kr/2/0/12982
오류 유형: 884. HTTP 500.0 - 명령행에서 실행한 ASP.NET Core 응용 프로그램을 실행하는 방법
; https://www.sysnet.pe.kr/2/0/13488
오류 유형: 899. HTTP Error 500.32 - ANCM Failed to Load dll
; https://www.sysnet.pe.kr/2/0/13579
                    
                    오랜만에 asp 페이지 테스트를 해봤습니다.
간단한 ATL 개체를 하나 만들고, 컴파일한 후 asp 페이지에서 다음과 같이 생성했습니다.
<%@ Language=VBScript %>
<%
Dim testObj
Set testObj = Server.CreateObject( "TestATL.SimpleObj" )
%>
그런데, 다음과 같이 아무런 단서도 없는 오류 화면만 나오는 것입니다.
테스트 환경: Windows 2003 SP1, VS.NET 2005
 
  
    |  | The page cannot be displayed | 
  
    | There is a problem with the page you are
    trying to reach and it cannot be displayed. | 
  
    | 
 Please try the following: 
      Open the  home page, and then look for links to
        the information you want. Click the 
      
       Refresh button, or try again later. 
Click  Search to look for information on the Internet.You can also see a list of related sites.     
 
 HTTP 500 - Internal server
    error Internet Explorer
 | 
이벤트 로그에도 아무런 오류도 안 남더군요. 이런 황당한 상황이. ^^; 도대체 어떤 정보를 가지고 오류 추적을 하라는 것인지.
그래도 평소 들었던 풍월이 있던지라, 오류 메시지를 개발자에게 도움이 되는 메시지로 보는 설정이 생각났습니다. 이 설정은 의외로, IIS 서버에서 이뤄지는 것이 아니고 클라이언트 측 IE에서 해주어야 하는 것이죠. 자세한 설명은 다음의 URL을 참고하십시오.
http://support.microsoft.com/default.aspx?scid=kb%3Bko%3B311766
일단, 위와 같이 적용하고 나니, 오류 메시지는 아래와 같이 변경이 되어서 출력이 되었습니다.
error 'ASP 0178 : 80070005'
Server.CreateObject Access Error
/comp/test.asp, line 8
The call to Server.CreateObject failed while checking permissions. Access is denied to this object.
휴... 그나마 다행이군요. ^^
단서가 충분하게 나왔습니다. 권한이 없다고 하니, 탐색기에서 해당 DLL의 권한을 살펴보았습니다. 다음과 같이 설정되어져 있었습니다.
 
제 시스템의 asp가 구동되는 w3wp.exe는 Application Pool의 설정에서 "SYSTEM" 권한으로 구동되도록 설정되어져 있었습니다. 아래의 화면에서는 그 SYSTEM 권한에 대해서 읽기 정도는 허용하도록 설정되어 있기 때문에 얼핏 문제가 없어 보입니다.
하지만, asp의 내부 동작을 살펴보면 분명 오류가 있다는 것을 알 수 있습니다.
해당 asp 페이지를 실행시키는 동안은 스레드의 실행 권한이 프로세스 실행 권한이 아닌, IIS 관리자의 보안 탭에서 설정한 "익명 액세스 접근 허용"에 따라 IUSR_[COMPUTERNAME]으로 설정되기 때문입니다.
그럼, 문제는 해결된 것 같습니다. 해당 DLL의 보안 탭에서 "IUSR_[COMPUTERNAME]" 또는 "Users"를 추가하고 Read 권한을 주면 되는 것입니다.
        
        [연관 글]