Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

ASP에서 업로드컴포넌트 사용시 Server.CreateObject의 "잘못된 클래스 문자열" 오류

ASP는 JSP의 cos.jar같은 소스단의 업로드기능을 제공하고 있지 않기 때문에 보통 서버의 업로드기능을 하는 컴포넌트를 설치해야 합니다. 국내에서는 상용으로 DextUpload가 있고 무료로는 UpDownExpress나 ABCUpload, TABS Upload가 있습니다.(ABCUpload는 이제 무료버전은 제공하고 있지 않은 듯 하군요.)

어쨌든 설치된 컴포넌트의 객체를 생성해서 사용하게 됩니다.

Set Upload = Server.CreateObject("TABSUpload4.Upload")

위처럼 사용하며 어느 컴포넌트나 거의 동일한 듯 합니다. 문자열에는 각 컴포넌트에 맞는 이름이 들어갑니다.

원래는 저렇게 하면 되야 되는데 컴포넌트가 정상적으로 설치되었음에도 불구하고 아래와 같은 오류메시지가 나타났습니다.

"잘못된 클래스 문자열" 오류메시지

서버 개체, ASP 0177 (0x800401F3)
잘못된 클래스 문자열입니다.
/commons/upload.asp, line 6

6번라인이 컴포넌트의 객체를 생성하는 코드가 있는 라인입니다.

처음에는 컴포넌트가 잘못 설치된 것으로 생각했는데 여러가지 컴포넌트를 설치해 보아도 동일한 문제가 계속되었습니다. 원래 저 오류는 Server.CreateObject에 문자열을 잘못주었을때만 나타나야 하는데 정확히 잘 주었음에도 위와같은 오류가 나타났습니다.

여러가지를 찾아보다가 도움이 될만한 글을 찾았습니다. Registry에 등록이 안되어 있을때 저 오류메시지가 나오는데 권한이 없을 때도 같은 현상이 나타난다는 내용입니다.

[실행]에서 "regedit"로 레지스트리 편집기에 들어가서 [HKEY_CLASSES_ROOT]에서 해당 컴포넌트의 이름(ProgID)을 찾습니다. TABS Upload의 경우에는 TABSUpload4.Upload라는 이름으로 등록이 되어 있습니다. 해당 ProgID의 사용권한에 "Everyone"을 추가하고 모든 권한을 줍니다.

레지스트리에서 ProgID에 권한추가화면

위와같이 추가하면 정상적으로 업로드 컴포넌트를 사용할 수 있습니다.
2009/08/25 03:18 2009/08/25 03:18