C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[3224] Re:[질문] ISAPI에서...서버 500 Error
박지훈.임프 [cbuilder] 4046 읽음    2000-03-30 00:00
화랑 님이 쓰신 글 :
: 안녕하세요..  화랑이라고 합니다..
:
: 이때까지 델파이를 사용하다가 개인적으로 빌더를 다시 시작할려고 합니다.
:
: 델파이로는 ISAPI를 만들곤 하는데..  빌더로 하니깐 이상하네요..
:
: 저도 넘 오랜만에 C를 해서 인지 손에 잘 익지도 않고요..
:
: void __fastcall TWebModule1::WebModule1WebActionItem1Action(
:       TObject *Sender, TWebRequest *Request, TWebResponse *Response,
:       bool &Handled)
: {
:   Response->Content = "Test ISAPI Programming";
: }
:
: 빌더에서 Action에 다음과 같이 코딩을 했는데..(델파이 코딩방식 ^^)
:
: 컴파일을 하고나서 ISAPI를 부르니깐 500 Error 가 나면서 되질 않네요..
:
: 그냥 간단히 Text를 뿌려줬는데..    도와주세요.. ^^



임펠리테리입니다.

델파이 코딩 방식이라기 보다는 VCL의 코딩 방식입니다. 빌더에서도 표준인 방법이죠. 보여주신 코딩 자체에는 문제가 없습니다.

HTTP에서 500번 에러는 cgi(ISAPI 등)의 웹 어플리케이션의 자체 에러로 응답을 보내줄 수 없을 때 발생하는 에러입니다. IE에서 이 에러가 날 때의 메시지를 보면 증상이 크게 두가지 경우로 나뉘어지는데, 첫번째는 실제로 cgi 등의 내부 런타임 에러(혹은 익셉션)이 발생했을 경우입니다. 이 경우에는 웹서버(ISAPI일 경우니 거의 IIS겠죠)가 인식하고 500번 에러에 대한 메시지 페이지를 보여줍니다. 큼직하게 500 에러라는 문자열이 나오면 이런 경우입니다.

두번째 경우는 cgi 모듈이 실행되는데 필요한 일부 모듈이 없어서 cgi 모듈이 아예 로드조차 되지 못한 경우입니다. 빌더나 델파이로 만든 경우라면, .bpl 파일 중의 하나가 없어서, 혹은 NT 고유의 특성인 사용자 권한 문제로 .bpl 파일에 접근하지 못하는 경우에 흔히 발생합니다. (비주얼씨나 비베로 만든 경우에도 비슷한 런타임 dll이 없을 경우 동일한 에러가 납니다.)

만약 첫번째 문제라면 자체적으로 디버깅을 실시해야 하겠지요? 하지만 두번째 문제는 좀 짜증납니다. 위에서 설명드렸던 것과 같은 원인을 모르는 경우가 많기 때문에 왜 "안되지??" 하고 시간만 보내기 십상이죠. 또한, bpl은 다 있을 자리에 있는데 권한의 문제로 bpl을 로드하지 못하는 경우도 있기 때문에 더 짜증나죠.

가장 확실한 해결책은 모든 패키지들을 다 포함한 큼직한 모듈을 만드는 것입니다. ISAPI의 특성상 한번만 로드되면 다시는 메모리에 올려지지 않으므로, bpl이 다 포함되어 1메가가 넘는 엄청난 크기의 웹모듈이 되었더라도 별 문제는 없습니다.

그럼 참고하시길...

+ -

관련 글 리스트
3215 [질문] ISAPI에서...서버 500 Error 화랑 3491 2000/03/28
3224     Re:[질문] ISAPI에서...서버 500 Error 박지훈.임프 4046 2000/03/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.