六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

ASP 3.0高級(jí)編程(315)

[摘要]7.5.1 常規(guī)調(diào)試技術(shù) 在第2章中,已經(jīng)看到如何使用Response.Write方法以及Request集合來顯示集合的內(nèi)容。如果代碼要使用來自請(qǐng)求的值,首先要做的是保證所需的值存在。很...
7.5.1 常規(guī)調(diào)試技術(shù)
       在第2章中,已經(jīng)看到如何使用Response.Write方法以及Request集合來顯示集合的內(nèi)容。如果代碼要使用來自請(qǐng)求的值,首先要做的是保證所需的值存在。很容易出現(xiàn)的問題是錯(cuò)拼或改變的<FORM>網(wǎng)頁中HTML控件的名字,或者創(chuàng)建附加在URL后面的查詢字符串時(shí)出現(xiàn)了錯(cuò)誤的客戶端。
1.  顯示各種集合內(nèi)容
當(dāng)程序試圖使用用戶提供的值運(yùn)行時(shí),可能沒有得到所期望的結(jié)果,或者什么結(jié)果也沒得到。記住,引用Request對(duì)象的集合中一個(gè)并不存在的值(例如,在窗體上沒有一個(gè)名為“ThisControl”的控件時(shí),使用Request.Form("ThisControl")不會(huì)引起錯(cuò)誤。結(jié)果可能只得到一個(gè)空字符串。如果期望查找存儲(chǔ)在用戶的Session對(duì)象或全局Application對(duì)象變量中的數(shù)值,同樣可能出現(xiàn)這種情況。
如果創(chuàng)建一個(gè)頁面用來顯示所有Request對(duì)象集合、Session和Application對(duì)象的Contents和StaticContens集合的內(nèi)容,可以任何網(wǎng)頁使用Server.Execute對(duì)其進(jìn)行訪問。所需要做的工作是把下面程序行加到ASP網(wǎng)頁中,用來顯示集合的全部?jī)?nèi)容。當(dāng)然,根據(jù)服務(wù)器上文件存放的位置,必須給文件設(shè)置相應(yīng)的路徑。
<% Server.Execute "/path_to_file/debug_Request.asp" %>
這是一種很好的方法,保證我們希望在Request、Session和Application集合中找到的任何值確實(shí)存在,并且包含了合適的值。在本書的示例文件Chapter07子目錄中提供了一個(gè)相應(yīng)的文件,取名為debug_Request.asp。它基本上是用于第2章的show_request.asp網(wǎng)頁和用于第3章的show_application.asp和show_session.asp網(wǎng)頁的一個(gè)組合,但刪除了部分HTML程序代碼。它只是簡(jiǎn)單地遍歷了集合并把值放到當(dāng)前頁面中。
可以通過運(yùn)行“Custom Error Page”實(shí)例來查看這個(gè)頁面。這個(gè)實(shí)例在本章前面看到過,打開時(shí)請(qǐng)選中“Display debugging information”復(fù)選框,或者直接在chapter07目錄中的主菜單網(wǎng)頁中打開。
2.  顯示中間值
在網(wǎng)頁中查看運(yùn)行情況的第二個(gè)方法是顯示網(wǎng)頁運(yùn)行時(shí)變量的值.當(dāng)大概知道了錯(cuò)誤來自何處,哪個(gè)變量在起作用時(shí),這種傳統(tǒng)技術(shù)還是不能廢棄的。但由于IIS 5.0網(wǎng)頁緩沖方式的改變,使得使用這項(xiàng)技術(shù)比較困難。
在ASP和IIS的先前版本中,缺省時(shí)關(guān)閉頁面緩沖,并且?guī)缀鯖]有人想到將緩沖打開(使用Response.Buffer = True打開),除非想使用Response.Redirect完成網(wǎng)頁的再定向(參看第2章)。響應(yīng)多個(gè)請(qǐng)求時(shí),由于緩沖減小了網(wǎng)頁間切換的次數(shù),從而提高了IIS的效率。
然而,當(dāng)出現(xiàn)一個(gè)使運(yùn)行停止的運(yùn)行期錯(cuò)誤時(shí),IIS自動(dòng)調(diào)用Response.Clear方法,再調(diào)用Server.Execute來裝入定制錯(cuò)誤網(wǎng)頁,因此寫進(jìn)網(wǎng)頁的任何輸出都丟失了。解決方法是暫時(shí)增加下面的程序行:
<% Response.Buffer = False %>
此程序行放在頁面頂部<@LANGUAGE...>指令后面,任何由Response.Write語句生成的調(diào)試輸出將出現(xiàn)在定制錯(cuò)誤網(wǎng)頁的頂部。記住在完成網(wǎng)頁調(diào)試之后將它去掉。
強(qiáng)行使程序運(yùn)行通過一個(gè)錯(cuò)誤點(diǎn),然后顯示可疑的變量值,這種方法有時(shí)也是有用的。只需在網(wǎng)頁開始處附近增加On Error Resume Next語句,然后就能訪問Err對(duì)象(在VBScript中),并顯示錯(cuò)誤號(hào)、錯(cuò)誤源和描述。
3.  檢查組件屬性值
如果使用的組件具有在ASP腳本代碼中設(shè)置的屬性,在完成設(shè)置之后,并且調(diào)用組件方法之前和之后,能通過顯示所有屬性(或僅是可疑的屬性)來跟蹤錯(cuò)誤。當(dāng)一個(gè)方法運(yùn)行時(shí),可能發(fā)現(xiàn)屬性值意外地被組件改變了,這或許是故意的,或者是因?yàn)榻M件中的缺陷。沒有親自檢查實(shí)際代碼,不要做任何假設(shè)。

7.5.2 Microsoft Script Debugger
       當(dāng)開發(fā)更復(fù)雜的處理實(shí)際任務(wù)的應(yīng)用程序時(shí),經(jīng)常需要一個(gè)更加強(qiáng)大的工具來進(jìn)行調(diào)試。Microsoft Script Debugger(微軟腳本調(diào)試器)是一種允許調(diào)試運(yùn)行在客戶機(jī)和服務(wù)器上的腳本的調(diào)試工具。它能用于任何啟用ActiveX的腳本語言(包括VBScript和JScript)編寫的程序,也能夠用來調(diào)試對(duì)Java applet、Java Bean和ActiveX組件的調(diào)用。
       在研究這個(gè)工具之前,先簡(jiǎn)要說明一些問題。如前所述,ASP應(yīng)用程序由兩種腳本組成,一種是客戶端腳本,一種是服務(wù)器端腳本。客戶端腳本通常由VBScript或JScript腳本語句組成,當(dāng)其到達(dá)客戶端時(shí)出現(xiàn)在HTML頁面中并在此執(zhí)行,可能是在載入文檔時(shí)或是在對(duì)一些事件的響應(yīng)中。服務(wù)器端腳本通常也由VBScript或JScript語句組成。當(dāng)瀏覽器請(qǐng)示網(wǎng)頁時(shí),服務(wù)器端腳本由IIS執(zhí)行。在下面的討論中,將討論服務(wù)器端腳本調(diào)試的方法。然而所討論的許多技術(shù)也可用于客戶端腳本調(diào)試。
1.  服務(wù)器端的調(diào)試
為了調(diào)試服務(wù)器端腳本,在運(yùn)行IIS的計(jì)算機(jī)上運(yùn)行腳本調(diào)試器,然而在使用腳本調(diào)試器之前,必須啟用調(diào)試。為了使性能最優(yōu)化,基于ASP的應(yīng)用程序在缺省情況下關(guān)閉了調(diào)試功能。
注意,不要對(duì)生產(chǎn)性的應(yīng)用程序(即處于活動(dòng)狀態(tài)的并被他人使用的公用網(wǎng)站)打開調(diào)試功能。這樣會(huì)減慢整個(gè)應(yīng)用程序的運(yùn)行,并且錯(cuò)誤能使網(wǎng)頁出現(xiàn)不確定的停止運(yùn)行情況。
調(diào)試僅能為虛擬應(yīng)用程序和整個(gè)Web網(wǎng)站進(jìn)行設(shè)置,為了啟用調(diào)試,打開應(yīng)用程序或站點(diǎn)的Properties對(duì)話框,在Home Directory選項(xiàng)卡中,點(diǎn)擊Configuration按鈕,在Application Configuration對(duì)話框的App Debugging選項(xiàng)卡中,選擇Enable ASP server-side script debugger,如圖7-22所示。下面準(zhǔn)備調(diào)試我們的應(yīng)用程序。

圖7-22  啟用調(diào)試的屏幕
注意Application Configuration對(duì)話框包含一個(gè)復(fù)選框,能夠啟用客戶端腳本調(diào)試。這一點(diǎn)在IIS 5.0中沒有實(shí)現(xiàn),在文檔中僅標(biāo)記為“reserved for future use”。如果通常的500-100.asp定制錯(cuò)誤頁面不可用,Script Error messages部分中包含將文本。
(1)    處理服務(wù)器腳本
不像客戶端腳本,基于ASP應(yīng)用程序腳本不是事件驅(qū)動(dòng)的。當(dāng)客戶端要求一個(gè)來自服務(wù)器的網(wǎng)頁時(shí),服務(wù)器讀取網(wǎng)頁內(nèi)容,并處理所有的服務(wù)器腳本(即在<%...%>和<SCRIPT RUNAT="SERVER"></SCRIPT>段中的所有內(nèi)容),也包括在HTML文本中的“行內(nèi)”腳本段內(nèi)容,例如:
The valve of the result is: <% = strResult %>
處理流程顯示在圖7-23所示的框圖中:

圖7-23  服務(wù)器腳本運(yùn)行流程圖
當(dāng)IIS載入網(wǎng)頁時(shí)將處理ASP頁面中的所有腳本,在任何輸出送給客戶端之前,ASP及腳本引擎能夠捕獲語法和運(yùn)行期錯(cuò)誤(除非你關(guān)閉緩沖或調(diào)用Response.Flush方法)。
(2)    腳本調(diào)試器提供的幫助
啟用腳本調(diào)試時(shí),如果出現(xiàn)錯(cuò)誤,在服務(wù)器屏幕上可以看到一個(gè)描述ASP代碼錯(cuò)誤的對(duì)話框,點(diǎn)擊OK,然后調(diào)入當(dāng)前ASP網(wǎng)頁的一個(gè)只讀拷貝,打開的腳本調(diào)試器,錯(cuò)誤出現(xiàn)的行由箭頭指示,如圖7-24所示:

圖7-24  腳本調(diào)試器
這里,錯(cuò)誤的產(chǎn)生是由于出現(xiàn)了Page Counter對(duì)象方法的名字錯(cuò)誤,應(yīng)是PageHit而不是DoPageHit。同時(shí),腳本調(diào)試器找到了錯(cuò)誤并且終止了頁面的運(yùn)行,工具條上的按鈕用于程序的繼續(xù)運(yùn)行、單步程序運(yùn)行或者終止頁面的處理。
工具條最右邊的按鈕打開腳本調(diào)試器中的Immediate窗口,可以用它和頁面進(jìn)行交互,并且很可能找到出錯(cuò)的地方。例如,可以查詢或者設(shè)置變量值或組件屬性,可以執(zhí)行內(nèi)部函數(shù)和子程序、自定義函數(shù)和子程序以及已經(jīng)創(chuàng)建的對(duì)象方法等。在圖中,調(diào)用了Page Counter組件的PageHit方法,然后查詢Hits屬性以得到正在運(yùn)行的腳本中該處的值。
為了了解為什么在“公共”網(wǎng)站上不應(yīng)使用腳本調(diào)試器,可以從客戶機(jī)上打開一個(gè)包含服務(wù)器端錯(cuò)誤的頁面。在這種情況下,錯(cuò)誤信息對(duì)話框出現(xiàn)在服務(wù)器上,腳本調(diào)試器也在服務(wù)器上打開。在客戶機(jī)上,直到運(yùn)行在服務(wù)器上的腳本調(diào)試器關(guān)閉,才開始載入該頁面。
(3)    啟動(dòng)和使用調(diào)試器
啟用腳本調(diào)試后,虛擬應(yīng)用程序的網(wǎng)頁中出現(xiàn)錯(cuò)誤時(shí),腳本調(diào)試器自動(dòng)啟動(dòng)。還可以人工啟動(dòng)腳本調(diào)試器,在Windows 2000的Start菜單(Programs Accessories Microsoft Script Debugger)中完成。相應(yīng)地,也可在想打開腳本調(diào)試器的地方把一個(gè)Stop語句插入ASP程序中,當(dāng)運(yùn)行至Stop語句時(shí),IIS會(huì)終止ASP程序的執(zhí)行,啟動(dòng)腳本調(diào)試器,顯示當(dāng)前頁面并指出含有Stop語句的當(dāng)前行。
腳本調(diào)試器能完成下列工作:
· 查看正在或已經(jīng)運(yùn)行的文檔的列表,并從中選擇一個(gè)進(jìn)行查看或編輯。
· 在打開的網(wǎng)頁中設(shè)置一個(gè)新斷點(diǎn),頁面在該點(diǎn)停止運(yùn)行以便進(jìn)行調(diào)試。
· 單步調(diào)試,一步運(yùn)行一條語句,可選地執(zhí)行子程序和函數(shù)。
· 查看調(diào)用棧(Call Stack),顯示程序中在該點(diǎn)被調(diào)用的嵌套子程序或函數(shù)。
1.  腳本調(diào)試器的技巧和竅門
下面是使用Microsoft Script Debugger時(shí),有助于找到腳本中錯(cuò)誤的一些竅門。
· 如果調(diào)試服務(wù)器端腳本,為ASP應(yīng)用程序啟用腳本調(diào)試器。否則,錯(cuò)誤信息將作為文本傳送給客戶端的瀏覽器,并且不能對(duì)服務(wù)器端腳本使用腳本調(diào)試器。
· 調(diào)試完成后,關(guān)閉調(diào)試功能,否則會(huì)降低服務(wù)器性能,并且錯(cuò)誤的頁面會(huì)停留在客戶端。
· 對(duì)于一個(gè)或更多的ASP應(yīng)用程序,如果啟用腳本調(diào)試器,將傳送給它所有的服務(wù)器錯(cuò)誤,包括那些遠(yuǎn)程客戶訪問網(wǎng)頁時(shí)出現(xiàn)的錯(cuò)誤。因此,除非能在自己的服務(wù)器上調(diào)試,否則不要啟用腳本調(diào)試器。
· 如果在一個(gè)沒有安裝在服務(wù)器上的瀏覽器中工作,并且在網(wǎng)頁中顯示錯(cuò)誤,則錯(cuò)誤在服務(wù)器端腳本中。如果一個(gè)錯(cuò)誤信息出現(xiàn)在對(duì)話框中,則錯(cuò)誤在客戶端腳本中。
· 如果在.asp文件中有一個(gè)語法或運(yùn)行期錯(cuò)誤,并且已經(jīng)對(duì)這個(gè)ASP應(yīng)用程序啟用調(diào)試功能,客戶端瀏覽器將不顯示語法錯(cuò)誤(除非瀏覽器運(yùn)行在服務(wù)器上),僅顯示超時(shí)或不能打開網(wǎng)頁。
· 在表明服務(wù)器端腳本中是否有錯(cuò)誤的消息中,顯示的行號(hào)指的是包含這個(gè)錯(cuò)誤的.asp文件的相應(yīng)行。
· 如果在由.asp文件創(chuàng)建的客戶端腳本中有錯(cuò)誤,行號(hào)并不指向.asp文件的錯(cuò)誤行,而是指向錯(cuò)誤出現(xiàn)的.asp文件的HTML輸出行。為了查看這行,應(yīng)在客戶瀏覽器中查看HTML文件的源程序。
· VBScript和JScript錯(cuò)誤代碼在附錄D中。

7.5.3 獲得ASP的幫助和支持
       如果遇到一個(gè)不能處理的錯(cuò)誤,或者看來像ASP中的一個(gè)“bug”的事情,最好能夠?qū)で髱椭越鉀Q這個(gè)問題。關(guān)于ASP在Web上有許多有用的信息源,第1 章后面我們列舉了許多。但是,對(duì)一些特殊問題,確實(shí)需要一些更直接的幫助。
       在計(jì)算機(jī)上安裝的ASP和IIS文檔是一個(gè)好起點(diǎn),并且能通過瀏覽器的URL為http://yourservername/iishelp/進(jìn)行訪問。運(yùn)行Windows 2000的附加組件設(shè)置或主設(shè)置程序(依賴于安裝的Windows 2000版本)時(shí),應(yīng)保證安裝了全部的文檔。
       也可以從“Microsoft for Windows 2000”得到的完整平臺(tái)SDK,其中包含了大量關(guān)于Windows和Windows 2000中Internet服務(wù)的附加信息。它包含完整的VBScript和JScript參考。它可以從微軟獲得,并提供給MSDN成員。腳本參考文檔可單獨(dú)獲得,也可以從“http://www.microsoft.com/scripting/”網(wǎng)站下載。也可從這里獲得腳本調(diào)試器。
微軟開發(fā)者網(wǎng)絡(luò)(The Microsoft Developer's Network,MSDN)Web站點(diǎn)也提供了許多支持和幫助,即使這部分信息有時(shí)難以找到。還可以從Workshop網(wǎng)站(http://msdn.microsoft.com/workshop/)開始,這個(gè)網(wǎng)站在左邊導(dǎo)航欄中有很好的索引和一系列標(biāo)題。
另外,位于http://msdn.microsoft.com/Library/default.htm的主MSDN庫包含有文章、基礎(chǔ)知識(shí)、FAQ和其他用于IIS和ASP的支持材料,左邊窗口使用一個(gè)Java擴(kuò)展列表控件,使用戶很容易進(jìn)行查找。
如果需要特別的幫助,或者需要向其他開發(fā)者提出一些問題,在msnews.microsoft.com網(wǎng)站上有一些有用的新聞組。還可以訂閱microsoft.public.inetserver.iis、microsoft.public.inetserver.activeserverpages和microsoft.public.inetserver.iis.misc。一些ASP網(wǎng)站也提供有關(guān)ASP方面的討論話題、論壇或聊天室。

7.6 小結(jié)
       本章討論的內(nèi)容是大多數(shù)編程者最不喜愛的工作。即使最簡(jiǎn)單的腳本,也不可能就能第一次正確地工作。隨著ASP提供越來越多的特性,在腳本中出現(xiàn)錯(cuò)誤的機(jī)會(huì)也增加了。了解如何發(fā)現(xiàn)并處理錯(cuò)誤的相關(guān)基本知識(shí),是非常必要的。
       通過分析可能出現(xiàn)的不同種類的錯(cuò)誤,弄清楚缺省的ASP和腳本引擎錯(cuò)誤處理系統(tǒng)捕獲錯(cuò)誤的機(jī)理,防止把錯(cuò)誤和無效數(shù)據(jù)傳給其他的應(yīng)用程序。編程時(shí)出現(xiàn)的錯(cuò)誤越少,越容易發(fā)現(xiàn)和解決它們。
       然而,好的編程習(xí)慣并不能阻止某些種類的錯(cuò)誤發(fā)生,例如那些由外部資源和服務(wù)造成的錯(cuò)誤。這意味著提供自己的定制錯(cuò)誤處理代碼,在出現(xiàn)錯(cuò)誤時(shí)知道如何跟蹤錯(cuò)誤并進(jìn)行妥善處理,是非常重要的。
       最后,以對(duì)Microsoft Script Debugger的闡述結(jié)束了本章,它是有助于找到和解決網(wǎng)頁中的運(yùn)行期錯(cuò)誤的一個(gè)有用的工具。它可以暫停程序執(zhí)行和進(jìn)行單步執(zhí)行,同時(shí)還能夠觀察程序在進(jìn)行什么,甚至能夠和腳本進(jìn)行交互。





主站蜘蛛池模板: 天天草综合网 | 亚洲免费视频一区 | 亚洲地址一地址二地址三 | 一区二区三区久久 | 日韩av一中美av一中文字慕 | 天天干伊人 | 最近中文字幕无吗高清免费视频 | 亚洲成a人片在线观看88 | 香蕉视频你懂的 | 日韩推理片在线免费看网站 | 五月婷婷爱 | 日本欧美国产精品 | 日本视频a| 青娱乐在线视频免费观看 | 天天躁日日躁狠狠躁欧美日韩 | 在线观看亚洲视频 | 在线看国产 | 日本不卡在线一区二区三区视频 | 五月开心激情网 | 亚洲综合站 | 天天狠狠干 | 视频一区二区不卡 | 香蕉人人超| 我在修仙世界朝九晚五漫画免费观看 | 色天使在线播放 | 四虎国产精品免费观看 | 在线免费h | 天天干天天干天天干天天 | 欧美一级高清片在线 | 亚洲伊人久久在 | 伊人网在线视频 | 亚洲欧美日韩专区一 | 四只虎免费永久观看地址 | 日本高清在线一区二区三区 | 亚洲宅男天堂a在线 | 三级理论在线 | 性感美女视频黄.免费网站 性感保姆正片 | 午夜国产精品影院在线观看 | 日韩欧美综合视频 | 香蕉久久一区二区三区 | 四虎在线最新永久免费播放 |