ASP 3.0高級編程(三十五)_ASP教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:使用ASP建設私人的搜索引擎很多網絡愛好者在創建自己的個人主頁時,都絞盡腦汁讓自己網站的功能更全面。在此,筆者介紹一種使用ASP建立自己的搜索引擎的方法。 基本思路 利用表單將用戶提交的搜索關鍵字存儲在變量中,
7.5.1 常規調試技術在第2章中,已經看到如何使用Response.Write方法以及Request集合來顯示集合的內容。如果代碼要使用來自請求的值,首先要做的是保證所需的值存在。很容易出現的問題是錯拼或改變的<FORM>網頁中HTML控件的名字,或者創建附加在URL后面的查詢字符串時出現了錯誤的客戶端。
1. 顯示各種集合內容
當程序試圖使用用戶提供的值運行時,可能沒有得到所期望的結果,或者什么結果也沒得到。記住,引用Request對象的集合中一個并不存在的值(例如,在窗體上沒有一個名為“ThisControl”的控件時,使用Request.Form("ThisControl")不會引起錯誤。結果可能只得到一個空字符串。如果期望查找存儲在用戶的Session對象或全局Application對象變量中的數值,同樣可能出現這種情況。
如果創建一個頁面用來顯示所有Request對象集合、Session和Application對象的Contents和StaticContens集合的內容,可以任何網頁使用Server.Execute對其進行訪問。所需要做的工作是把下面程序行加到ASP網頁中,用來顯示集合的全部內容。當然,根據服務器上文件存放的位置,必須給文件設置相應的路徑。
<% Server.Execute "/path_to_file/debug_Request.asp" %>
這是一種很好的方法,保證我們希望在Request、Session和Application集合中找到的任何值確實存在,并且包含了合適的值。在本書的示例文件Chapter07子目錄中提供了一個相應的文件,取名為debug_Request.asp。它基本上是用于第2章的show_request.asp網頁和用于第3章的show_application.asp和show_session.asp網頁的一個組合,但刪除了部分HTML程序代碼。它只是簡單地遍歷了集合并把值放到當前頁面中。
可以通過運行“Custom Error Page”實例來查看這個頁面。這個實例在本章前面看到過,打開時請選中“Display debugging information”復選框,或者直接在chapter07目錄中的主菜單網頁中打開。
2. 顯示中間值
在網頁中查看運行情況的第二個方法是顯示網頁運行時變量的值.當大概知道了錯誤來自何處,哪個變量在起作用時,這種傳統技術還是不能廢棄的。但由于IIS 5.0網頁緩沖方式的改變,使得使用這項技術比較困難。
在ASP和IIS的先前版本中,缺省時關閉頁面緩沖,并且幾乎沒有人想到將緩沖打開(使用Response.Buffer = True打開),除非想使用Response.Redirect完成網頁的再定向(參看第2章)。響應多個請求時,由于緩沖減小了網頁間切換的次數,從而提高了IIS的效率。
然而,當出現一個使運行停止的運行期錯誤時,IIS自動調用Response.Clear方法,再調用Server.Execute來裝入定制錯誤網頁,因此寫進網頁的任何輸出都丟失了。解決方法是暫時增加下面的程序行:
<% Response.Buffer = False %>
此程序行放在頁面頂部<@LANGUAGE...>指令后面,任何由Response.Write語句生成的調試輸出將出現在定制錯誤網頁的頂部。記住在完成網頁調試之后將它去掉。
強行使程序運行通過一個錯誤點,然后顯示可疑的變量值,這種方法有時也是有用的。只需在網頁開始處附近增加On Error Resume Next語句,然后就能訪問Err對象(在VBScript中),并顯示錯誤號、錯誤源和描述。
3. 檢查組件屬性值
如果使用的組件具有在ASP腳本代碼中設置的屬性,在完成設置之后,并且調用組件方法之前和之后,能通過顯示所有屬性(或僅是可疑的屬性)來跟蹤錯誤。當一個方法運行時,可能發現屬性值意外地被組件改變了,這或許是故意的,或者是因為組件中的缺陷。沒有親自檢查實際代碼,不要做任何假設。
7.5.2 Microsoft Script Debugger
當開發更復雜的處理實際任務的應用程序時,經常需要一個更加強大的工具來進行調試。Microsoft Script Debugger(微軟腳本調試器)是一種允許調試運行在客戶機和服務器上的腳本的調試工具。它能用于任何啟用ActiveX的腳本語言(包括VBScript和JScript)編寫的程序,也能夠用來調試對Java applet、Java Bean和ActiveX組件的調用。
在研究這個工具之前,先簡要說明一些問題。如前所述,ASP應用程序由兩種腳本組成,一種是客戶端腳本,一種是服務器端腳本。客戶端腳本通常由VBScript或JScript腳本語句組成,當其到達客戶端時出現在HTML頁面中并在此執行,可能是在載入文檔時或是在對一些事件的響應中。服務器端腳本通常也由VBScript或JScript語句組成。當瀏覽器請示網頁時,服務器端腳本由IIS執行。在下面的討論中,將討論服務器端腳本調試的方法。然而所討論的許多技術也可用于客戶端腳本調試。
1. 服務器端的調試
為了調試服務器端腳本,在運行IIS的計算機上運行腳本調試器,然而在使用腳本調試器之前,必須啟用調試。為了使性能最優化,基于ASP的應用程序在缺省情況下關閉了調試功能。
注意,不要對生產性的應用程序(即處于活動狀態的并被他人使用的公用網站)打開調試功能。這樣會減慢整個應用程序的運行,并且錯誤能使網頁出現不確定的停止運行情況。
調試僅能為虛擬應用程序和整個Web網站進行設置,為了啟用調試,打開應用程序或站點的Properties對話框,在Home Directory選項卡中,點擊Configuration按鈕,在Application Configuration對話框的App Debugging選項卡中,選擇Enable ASP server-side script debugger,下面準備調試我們的應用程序。
注意Application Configuration對話框包含一個復選框,能夠啟用客戶端腳本調試。這一點在IIS 5.0中沒有實現,在文檔中僅標記為“reserved for future use”。如果通常的500-100.asp定制錯誤頁面不可用,Script Error messages部分中包含將文本。
(1) 處理服務器腳本
不像客戶端腳本,基于ASP應用程序腳本不是事件驅動的。當客戶端要求一個來自服務器的網頁時,服務器讀取網頁內容,并處理所有的服務器腳本(即在<%...%>和<SCRIPT RUNAT="SERVER"></SCRIPT>段中的所有內容),也包括在HTML文本中的“行內”腳本段內容,例如:
The valve of the result is: <% = strResult %>
處理流程顯示框圖中
當IIS載入網頁時將處理ASP頁面中的所有腳本,在任何輸出送給客戶端之前,ASP及腳本引擎能夠捕獲語法和運行期錯誤(除非你關閉緩沖或調用Response.Flush方法)。
(2) 腳本調試器提供的幫助
啟用腳本調試時,如果出現錯誤,在服務器屏幕上可以看到一個描述ASP代碼錯誤的對話框,點擊OK,然后調入當前ASP網頁的一個只讀拷貝,打開的腳本調試器,錯誤出現的行由箭頭指示
這里,錯誤的產生是由于出現了Page Counter對象方法的名字錯誤,應是PageHit而不是DoPageHit。同時,腳本調試器找到了錯誤并且終止了頁面的運行,工具條上的按鈕用于程序的繼續運行、單步程序運行或者終止頁面的處理。
工具條最右邊的按鈕打開腳本調試器中的Immediate窗口,可以用它和頁面進行交互,并且很可能找到出錯的地方。例如,可以查詢或者設置變量值或組件屬性,可以執行內部函數和子程序、自定義函數和子程序以及已經創建的對象方法等。在圖中,調用了Page Counter組件的PageHit方法,然后查詢Hits屬性以得到正在運行的腳本中該處的值。
為了了解為什么在“公共”網站上不應使用腳本調試器,可以從客戶機上打開一個包含服務器端錯誤的頁面。在這種情況下,錯誤信息對話框出現在服務器上,腳本調試器也在服務器上打開。在客戶機上,直到運行在服務器上的腳本調試器關閉,才開始載入該頁面。
(3) 啟動和使用調試器
啟用腳本調試后,虛擬應用程序的網頁中出現錯誤時,腳本調試器自動
分享:ASP實例:詞語搭配游戲的制作這是個關于詞語搭配的游戲,是用ASP、VBScript和JavaScript寫的。 在本機Win98 OEM2、PWS、IE5下測試下沒發現大問題。 使用方法: 方法一:比方說你的3W服務的目錄是C:Inetpubwwwroot,
相關ASP教程:
- 相關鏈接:
- 教程說明:
ASP教程-ASP 3.0高級編程(三十五)。