권장 : ASP를 사용하여 개인 검색 엔진을 구축하십시오 많은 인터넷 애호가들은 자신의 개인 홈페이지를 만들 때 웹 사이트의 기능을보다 포괄적으로 만들기 위해 뇌를 쌓아 올립니다. 여기서 저자는 ASP를 사용하여 자체 검색 엔진을 구축하는 방법을 소개합니다. 기본 아이디어는 양식을 사용하여 변수의 사용자가 제출 한 검색 키워드를 저장하는 것입니다.
7.5.1 일반 디버깅 기술2 장에서는 resign.write 메소드 및 요청 컬렉션을 사용하여 컬렉션의 내용을 표시하는 방법을 보았습니다. 코드가 요청에서 값을 사용하려는 경우 가장 먼저해야 할 일은 필요한 값이 존재하는지 확인하는 것입니다. 쉬운 문제는 <form> 웹 페이지의 HTML 컨트롤 이름이 철자 또는 변경되거나 URL에 첨부 된 쿼리 문자열을 작성할 때 잘못된 클라이언트가 나타납니다.
1. 다양한 수집 내용을 표시합니다
프로그램이 사용자가 제공 한 값으로 실행하려고 할 때 원하는 결과를 얻지 못하거나 아무것도 얻지 못할 수도 있습니다. Request.form (thistrol)을 사용하여 요청 객체 모음에 존재하지 않는 값을 참조 할 때 오류가 발생하지 않습니다 (예 : 양식 에서이 구성이라는 컨트롤이없는 경우 결과는 빈 문자열 만 가져올 수 있습니다. 사용자의 세션 객체 또는 글로벌 응용 프로그램 개체에 저장된 값을 찾을 수 있습니다.
모든 요청 객체 컬렉션, 세션 및 응용 프로그램 객체의 내용 및 staticContens 컬렉션의 내용을 표시하는 페이지를 작성하면 Server.Execute를 사용하여 액세스 할 수 있습니다. 작업을 수행 해야하는 작업은 ASP 웹 페이지에 다음 프로그램 라인을 추가하여 컬렉션의 전체 컨텐츠를 표시하는 것입니다. 물론 파일이 서버에 저장된 위치에 따라 해당 경로를 파일에 대해 설정해야합니다.
< % server.execute /path_to_file/debug_request.asp %>
이것은 요청, 세션 및 응용 프로그램 컬렉션에서 우리가 찾고자하는 모든 값에 존재하고 적절한 값을 포함하도록하는 좋은 방법입니다. 해당 파일은 샘플 파일에서 Debug_Request.asp라는이 책의 Subdirectory에 제공됩니다. 기본적으로 2 장 및 Show_Application.asp 및 Show_Session.asp 웹 페이지의 Show_Request.asp 웹 페이지의 조합이지만 일부 HTML 프로그램 코드를 제거합니다. 그것은 단순히 컬렉션을 반복하고 값을 현재 페이지에 넣습니다.
이 페이지는 사용자 정의 오류 페이지 인스턴스를 실행하여 볼 수 있습니다. 이 예는이 장의 앞부분에서 볼 수있었습니다. 열면 디스플레이 디버깅 정보 확인란을 선택하거나 챕터07 디렉토리의 기본 메뉴 웹 페이지에서 직접 열립니다.
2. 중간 값을 표시하십시오
웹 페이지에서 실행중인 상황을 보는 두 번째 방법은 웹 페이지가 실행될 때 변수의 값을 표시하는 것입니다. 이 전통적인 기술은 오류의 출처와 어떤 변수가 작동하는지 대략 알면 폐기 할 수 없습니다. 그러나 IIS 5.0 웹 버퍼링 방법의 변화로 인해이 기술을 사용하기가 어렵습니다.
이전 버전의 ASP 및 IIS에서는 페이지 버퍼링이 기본적으로 꺼져 있었고, 버퍼를 켜는 것을 생각하지 않았습니다 (응답을 사용하지 않는 한, 웹 페이지의 리디렉션을 완료하기 위해 REDIRECT를 사용하지 않는 한 (응답 .buffer = true)는 거의 아무도 생각하지 않았습니다 (2 장 참조). 여러 요청에 응답 할 때 버퍼링은 웹 페이지 간의 전환 수를 줄여 IIS의 효율성을 향상시킵니다.
그러나 실행이 중지되는 런타임 오류가 발생하면 IIS는 자동으로 응답을 호출 한 다음 Server.Execute를 호출하여 사용자 정의 오류 페이지를로드하여 웹 페이지에 작성된 모든 출력이 손실됩니다. 해결책은 다음 프로그램 라인을 일시적으로 추가하는 것입니다.
< % response.buffer = false %>
이 프로그램 라인은 <@language ...> 지시문 후 페이지 상단에 배치되며 응답으로 생성 된 디버그 출력이 사용자 정의 오류 페이지 상단에 나타납니다. 웹 페이지 디버깅을 마친 후에는 제거해야합니다.
이 방법은 때때로 프로그램이 오류 지점을 통과 한 다음 의심스러운 변수 값을 표시하는 데 유용합니다. 웹 페이지의 시작 부분 근처에서 on Error 이력서 다음 문을 추가 한 다음 err 오브젝트 (vbscript)에 액세스하고 오류 번호, 오류 소스 및 설명을 표시 할 수 있습니다.
3. 구성 요소 속성 값을 확인하십시오
사용 된 구성 요소에 ASP 스크립트 코드에 설정된 속성이있는 경우 설정이 완료된 후 및 구성 요소 메소드가 호출되기 전후에 호출되면 모든 속성 (또는 의심스러운 속성)을 표시하여 오류를 추적 할 수 있습니다. 메소드가 실행되면 부동산 값이 부동산에 의해 실수로 의도적으로 또는 구성 요소의 결함으로 인해 실수로 변경되었음을 발견 할 수 있습니다. 실제 코드를 직접 확인하지 않고는 가정을하지 마십시오.
7.5.2 Microsoft 스크립트 디버거
실제 작업을 처리하는보다 복잡한 애플리케이션을 개발할 때는 디버깅에 더 강력한 도구가 필요합니다. Microsoft Script Debugger는 클라이언트 및 서버에서 실행되는 스크립트를 디버깅 할 수있는 디버깅 도구입니다. ActiveX 지원 스크립팅 언어 (vbscript 및 jscript 포함)에 사용할 수 있으며 Java 애플릿, Java Bean 및 ActiveX 구성 요소로 호출을 디버깅하는 데 사용할 수도 있습니다.
이 도구를 연구하기 전에 몇 가지 문제를 간단히 설명하십시오. 앞에서 언급했듯이 ASP 응용 프로그램은 두 가지 유형의 스크립트로 구성됩니다. 하나는 클라이언트 스크립트이고 다른 하나는 서버 스크립트입니다. 클라이언트 스크립트는 일반적으로 클라이언트에 도착하고 문서가로드 될 때 또는 일부 이벤트에 대한 응답으로 실행될 때 HTML 페이지에 나타나는 vbscript 또는 jscript 스크립트 문으로 구성됩니다. 서버 측 스크립트는 일반적으로 vbscript 또는 jscript 문으로 구성됩니다. 브라우저가 웹 페이지를 요청하면 IIS에 의해 서버 측 스크립트가 실행됩니다. 다음 논의에서는 서버 측 스크립트 디버깅 방법에 대해 설명합니다. 그러나 논의 된 많은 기술은 클라이언트 스크립트 디버깅에도 사용될 수 있습니다.
1. 서버 측 디버깅
서버 측 스크립트를 디버그하려면 IIS를 실행하는 컴퓨터에서 스크립트 디버거를 실행하더라도 스크립트 디버거를 사용하기 전에 디버깅을 활성화해야합니다. 성능을 최적화하기 위해 ASP 기반 응용 프로그램은 기본적으로 디버깅을 끕니다.
생산적인 응용 프로그램 (즉, 다른 사람들이 활성화되고 사용되는 공개 웹 사이트)에서 디버깅을 켜지 않도록주의하십시오. 이렇게하면 전체 응용 프로그램의 속도가 느려지고 오류로 인해 웹 페이지가 결정적으로 실행을 중지 할 수 있습니다.
디버깅은 가상 응용 프로그램 및 전체 웹 사이트에 대해서만 설정할 수 있습니다. 디버깅을 활성화하려면 응용 프로그램 또는 사이트의 속성 대화 상자를 열고 홈 디렉토리 탭에서 응용 프로그램 구성 대화 상자의 앱 디버깅 탭에서 구성 버튼을 클릭하고 ASP 서버 측 스크립트 디버거 활성화를 선택하고 아래 애플리케이션을 디버깅 할 준비를 선택하십시오.
참고 응용 프로그램 구성 대화 상자에는 클라이언트 스크립트 디버깅을 가능하게하는 확인란이 포함되어 있습니다. 이것은 IIS 5.0에서 구현되지 않으며 문서에서 향후 사용을 위해 예약 된 것으로 표시됩니다. 일반적인 500-100.asp 사용자 정의 오류 페이지를 사용할 수없는 경우 스크립트 오류 메시지 섹션에 텍스트가 포함되어 있습니다.
(1) 서버 스크립트 처리
클라이언트 스크립트와 달리 ASP 기반 애플리케이션 스크립트는 이벤트 중심이 아닙니다. 클라이언트가 서버에서 웹 페이지를 요청하면 서버는 웹 페이지 컨텐츠를 읽고 모든 서버 스크립트 (즉, <%...%> 및 <script runat = server> </script> 세그먼트)와 다음과 같은 HTML 텍스트의 인라인 스크립트 세그먼트 내용을 처리합니다.
결과 밸브는 다음과 같습니다. < % = strresult %>
프로세스 흐름 디스플레이 박스 다이어그램
IIS가 웹 페이지를로드하면 ASP 페이지의 모든 스크립트가 처리됩니다. 출력이 클라이언트로 전송되기 전에 ASP 및 스크립트 엔진은 구문 및 런타임 오류를 포착 할 수 있습니다 (버퍼링을 끄거나 응답 메소드를 호출하지 않는 한).
(2) 스크립트 디버거가 제공 한 도움
스크립트 디버깅을 활성화하면 오류가 발생하면 서버 화면에서 ASP 코드 오류를 설명하는 대화 상자가 표시됩니다. 확인을 클릭 한 다음 현재 ASP 웹 페이지의 읽기 전용 사본을 호출하십시오. 스크립트 디버거가 열렸습니다. 오류에 나타나는 선은 화살표로 표시됩니다.
여기서 오류는 Page Counter Object 메소드의 이름 오류로 인해 발생하며 DopageHit 대신 PageHit이어야합니다. 동시에 스크립트 디버거는 오류를 발견하고 페이지가 실행되는 것을 종료했습니다. 도구 모음의 버튼은 프로그램을 계속하거나 단일 단계 프로그램 실행 또는 페이지 실행을 종료하는 데 사용됩니다.
도구 모음의 가장 오른쪽에있는 버튼은 스크립트 디버거의 즉각적인 창을 열어 페이지와 상호 작용하는 데 사용할 수 있으며 오류가 발생하는 장소를 찾을 가능성이 높습니다. 예를 들어, 가변 값 또는 구성 요소 속성을 쿼리하거나 설정할 수 있으며 내부 기능 및 서브 루틴, 사용자 정의 기능 및 서브 루틴, 생성 된 객체 메소드 등을 실행할 수 있습니다. 그림에서 페이지 카운터 구성 요소의 PageHit 메소드가 호출되고 HITS 속성이 쿼리되어 실행중인 스크립트에서 해당 시점에서 값을 얻습니다.
공개 웹 사이트에서 스크립트 디버커를 사용하지 않아야하는 이유를 이해하려면 클라이언트의 서버 측 오류가 포함 된 페이지를 열 수 있습니다. 이 경우 서버에 오류 메시지 대화 상자가 나타나고 스크립트 디버거도 서버에서 열립니다. 클라이언트의 경우 서버에서 실행되는 스크립트 디버거가 닫힐 때까지 페이지가로드되지 않습니다.
(3) 디버거를 시작하고 사용하십시오
스크립트 디버깅을 활성화하면 가상 응용 프로그램의 웹 페이지에서 오류가 발생하면 스크립트 디버거가 자동으로 발생합니다.
공유 : ASP 예 : 워드 협력 게임 제작 이것은 ASP, vbscript 및 JavaScript로 작성된 단어 코딩에 관한 게임입니다. Win98 OEM2, PWS 및 IE5에서 테스트 중에는 주요 문제가 발견되지 않았습니다. 사용 방법 : 메소드 1 : 예를 들어, 3W 서비스의 디렉토리는 C : inetpubwwwroot입니다.