소년포비의 세계정복!!

[스크랩] ASP 에서 Base64.dll 이용시 [형식이 일치하지 않습니다.: `Encode`] 에러 대처방법. 본문

프로그램 세상/ASP.NET

[스크랩] ASP 에서 Base64.dll 이용시 [형식이 일치하지 않습니다.: `Encode`] 에러 대처방법.

소년포비 2009. 3. 10. 10:23

ASP에서 Base64 암호화를 하기 위해 일반 ASP로 개발시 즐겨쓰는

대표적인 라이브러리인 Base64.dll에 관련된 노하우 입니다.

해결하고 나서 저만 이런 문제점에 부딫이는 게 아닐꺼다 라는 생각이 들어 올려봅니다.. ^^;

아~ 물론 저는 ASP.NET, ASP 둘 다 병행하는 개발자 입니다.

 

그럼 본론으로..

 

Base64.dll 라이브러리 파일은 이미 regsvr32 툴을 이용하여 등록을 마친 상태이고

<%
 Option Explicit

 Dim objCrypt
 Dim strTest
 Dim strEnc, strDec

 strTest = "This is the Test code"
 Set objCrypt = Server.CreateObject("Base64Lib.Base64")
  strEnc = objCrypt.Encode(strTest)
 Set objCrypt = Nothing
 Response.Write(strEnc)

%>

 

이렇게 코딩을 하였을때 간혹..

 

------- ------- ------- ------- ------- ------- ------- ------- ------- -------

Microsoft VBScript 런타임 오류 error '800a000d'

형식이 일치하지 않습니다.: 'Encode'

/WebLinkage/include/inc_dbserver.asp, line 11

 ------- ------- ------- ------- ------- ------- ------- ------- ------- -------

 

위와 같은 오류를 만날 수 있습니다.

 

이럴때는..

 

문제가 생긴 메쏘드 지정 라인인 "strEnc = objCrypt.Encode(strTest)" 코딩 라인에서

Encode 메쏘드에 인자값인 strTest 를 스트링 변환 함수인 CStr()함수로 한번 감싸주시면 됩니다.

그러므로 수정된 코드는..

 

"strEnc = objCrypt.Encode(CStr(strTest))" 해주시면 되겠습니다..

 

극히 간단하게 해결된 것이지만 의문점을 많이 자아내는 오류인 것 같습니다..

보니까 TypeName 함수로 strTest 변수를 찍어봐도 String 형식이라고 나오는데

왜 굳이 String 형으로 한번 변환해줘야지 들어가는 것일까요..(아직 밝혀내지는못했습니다ㅜㅠ)

아~ 참고로 저 Encode 메쏘드의 인자값과 리턴형식 모두 String입니다..

전혀 문제 될 것이 없는 상태인데 말이지요..
이상 입니다~

출처 : 닷넷 (.NET) 프로그래머 모임
글쓴이 : 서로빛 원글보기
메모 :