仓酷云

标题: ASP网页设计程序调试―发明及处置毛病 [打印本页]

作者: 小妖女    时间: 2015-1-16 22:55
标题: ASP网页设计程序调试―发明及处置毛病
asp,jsp,php是web开发的三大技术,asp简单易用且有microsoft做靠山,jsp功能强大是因为有java支持,php则开源跨平台.在国内,asp应用范围最广,jsp发展势头最猛,php则处于劣势.这可能与公司的支持以及技术的培训有关.程序|毛病
读完下面内容,读者必定很想创立一个没有毛病的ASP网页。但你大概会发明网页其实不能事情。怎样办,只要举行测试。在这一部分,起首扼要看一下能使调试更简单的一些工具。MicrosoftScriptDebugger试图把调试撑持工具进步到像VisualBasic、Delphi和VisualC++等年夜多半传统编程情况的程度。但是,上面将起首会商一些更传统的有助于跟踪呈现在网页中的毛病的手艺。
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程序代码。它只是复杂地遍历了汇合并把值放到以后页面中。
能够经由过程运转“CustomErrorPage”实例来检察这个页面。这个实例在本章后面看到过,翻开时请选中“Displaydebugginginformation”复选框,大概间接在chapter07目次中的主菜单网页中翻开。
2.显现两头值
在网页中检察运转情形的第二个办法是显现网页运转时变量的值.当也许晓得了毛病来自那边,哪一个变量在起感化时,这类传统手艺仍是不克不及放弃的。但因为IIS5.0网页缓冲体例的改动,使得利用这项手艺对照坚苦。
在ASP和IIS的先前版本中,缺省时封闭页面缓冲,而且几近没有人想到将缓冲翻开(利用Response.Buffer=True翻开),除非想利用Response.Redirect完成网页的再定向(参看第2章)。呼应多个哀求时,因为缓冲减小了网页间切换的次数,从而进步了IIS的效力。
但是,当呈现一个使运转中断的运转期毛病时,IIS主动挪用Response.Clear办法,再挪用Server.Execute来装进定制毛病网页,因而写进网页的任何输入都丧失了。办理办法是临时增添上面的程序行:
<%Response.Buffer=False%>
此程序行放在页面顶部<@LANGUAGE...>指令前面,任何由Response.Write语句天生的调试输入将呈现在定制毛病网页的顶部。记着在完成网页调试以后将它往失落。
强利用程序运转经由过程一个毛病点,然后显现可疑的变量值,这类办法偶然也是有效的。只需在网页入手下手处四周增添OnErrorResumeNext语句,然后就可以会见Err工具(在VBScript中),并显现毛病号、毛病源和形貌。
3.反省组件属性值
假如利用的组件具有在ASP剧本代码中设置的属性,在完成设置以后,而且挪用组件办法之前和以后,能经由过程显现一切属性(或仅是可疑的属性)来跟踪毛病。当一个办法运转时,大概发明属性值不测地被组件改动了,这也许是存心的,大概是由于组件中的缺点。没有亲身反省实践代码,不要做任何假定。

7.5.2MicrosoftScriptDebugger
当开辟更庞大的处置实践义务的使用程序时,常常必要一个加倍壮大的工具来举行调试。MicrosoftScriptDebugger(微软剧本调试器)是一种同意调试运转在客户机和服务器上的剧本的调试工具。它能用于任何启用ActiveX的剧本言语(包含VBScript和JScript)编写的程序,也可以用来调试对Javaapplet、JavaBean和ActiveX组件的挪用。
在研讨这个工具之前,先扼要申明一些成绩。如前所述,ASP使用程序由两种剧本构成,一种是客户端剧本,一种是服务器端剧本。客户端剧本一般由VBScript或JScript剧本语句构成,当其抵达客户端时呈现在HTML页面中并在此实行,多是在载进文档时或是在对一些事务的呼应中。服务器端剧本一般也由VBScript或JScript语句构成。当扫瞄器叨教网页时,服务器端剧本由IIS实行。鄙人面的会商中,将会商服务器端剧本调试的办法。但是所会商的很多手艺也可用于客户端剧本调试。
1.服务器真个调试
为了调试服务器端剧本,在运转IIS的盘算机上运转剧本调试器,但是在利用剧本调试器之前,必需启用调试。为了使功能最优化,基于ASP的使用程序在缺省情形下封闭了调试功效。
注重,不要对临盆性的使用程序(即处于举动形态的并被别人利用的公用网站)翻开调试功效。如许会减慢全部使用程序的运转,而且毛病能使网页呈现不断定的中断运转情形。
调试仅能为假造使用程序和全部Web网站举行设置,为了启用调试,翻开使用程序或站点的Properties对话框,在HomeDirectory选项卡中,点击Configuration按钮,在ApplicationConfiguration对话框的AppDebugging选项卡中,选择EnableASPserver-sidescriptdebugger,如-22所示。上面筹办调试我们的使用程序。
ASP网页设计程序调试―发明及处置毛病
登录/注册后可看大图

注重ApplicationConfiguration对话框包括一个复选框,可以启用客户端剧本调试。这一点在IIS5.0中没有完成,在文档中仅标志为“reservedforfutureuse”。假如一般的500-100.asp定制毛病页面不成用,ScriptErrormessages部分中包括将文本。
(1)处置服务器剧本
不像客户端剧本,基于ASP使用程序剧本不是事务驱动的。当客户端请求一个来自服务器的网页时,服务器读取网页内容,并处置一切的服务器剧本(即在<%...%>和<SCRIPTRUNAT="SERVER"></SCRIPT>段中的一切内容),也包含在HTML文本中的“行内”剧本段内容,比方:
Thevalveoftheresultis:<%=strResult%>
处置流程显现在-23所示的框图中:
ASP网页设计程序调试―发明及处置毛病
登录/注册后可看大图

当IIS载进网页时将处置ASP页面中的一切剧本,在任何输入送给客户端之前,ASP及剧本引擎可以捕捉语法和运转期毛病(除非你封闭缓冲或挪用Response.Flush办法)。
(2)剧本调试器供应的匡助
启用剧本调试时,假如呈现毛病,在服务器屏幕上能够看到一个形貌ASP代码毛病的对话框,点击OK,然后调进以后ASP网页的一个只读拷贝,翻开的剧本调试器,毛病呈现的行由箭头唆使,如-24所示:
ASP网页设计程序调试―发明及处置毛病
登录/注册后可看大图

这里,毛病的发生是因为呈现了PageCounter工具办法的名字毛病,应是PageHit而不是DoPageHit。同时,剧本调试器找到了毛病而且停止了页面的运转,工具条上的按钮用于程序的持续运转、单步程序运转大概停止页面的处置。
工具条最右侧的按钮翻开剧本调试器中的Immediate窗口,能够用它和页面举行交互,而且极可能找到堕落的中央。比方,能够查询大概设置变量值或组件属性,能够实行外部函数和子程序、自界说函数和子程序和已创立的工具办法等。在图中,挪用了PageCounter组件的PageHit办法,然后查询Hits属性以失掉正在运转的剧本中该处的值。
为了懂得为何在“大众”网站上不该利用剧本调试器,能够从客户机上翻开一个包括服务器端毛病的页面。在这类情形下,毛病信息对话框呈现在服务器上,剧本调试器也在服务器上翻开。在客户机上,直到运转在服务器上的剧本调试器封闭,才入手下手载进该页面。
(3)启动和利用调试器
启用剧本调试后,假造使用程序的网页中呈现毛病时,剧本调试器主动启动。还能够野生启动剧本调试器,在Windows2000的Start菜单(Programs|Accessories|MicrosoftScriptDebugger)中完成。响应地,也可在想翻开剧本调试器的中央把一个Stop语句拔出ASP程序中,当运转至Stop语句时,IIS会停止ASP程序的实行,启动剧本调试器,显现以后页面并指出含有Stop语句确当前行。
剧本调试器能完成以下事情:
·检察正在或已运转的文档的列表,并从当选择一个举行检察或编纂。
·在翻开的网页中设置一个新断点,页面在该点中断运转以便举行调试。
·单步伐试,一步运转一条语句,可选地实行子程序和函数。
·检察挪用栈(CallStack),显现程序中在该点被挪用的嵌套子程序或函数。
1.剧本调试器的技能和秘诀
上面是利用MicrosoftScriptDebugger时,有助于找到剧本中毛病的一些秘诀。
·假如调试服务器端剧本,为ASP使用程序启用剧本调试器。不然,毛病信息将作为文本传送给客户真个扫瞄器,而且不克不及对服务器端剧本利用剧本调试器。
·调试完成后,封闭调试功效,不然会下降服务器功能,而且毛病的页面会停止在客户端。
·关于一个或更多的ASP使用程序,假如启用剧本调试器,将传送给它一切的服务器毛病,包含那些远程客户会见网页时呈现的毛病。因而,除非能在本人的服务器上调试,不然不要启用剧本调试器。
·假如在一个没有安装在服务器上的扫瞄器中事情,而且在网页中显现毛病,则毛病在服务器端剧本中。假如一个毛病信息呈现在对话框中,则毛病在客户端剧本中。
·假如在.asp文件中有一个语法或运转期毛病,而且已对这个ASP使用程序启用调试功效,客户端扫瞄器将不显现语法毛病(除非扫瞄器运转在服务器上),仅显现超时或不克不及翻开网页。
·在标明服务器端剧本中是不是有毛病的动静中,显现的行号指的是包括这个毛病的.asp文件的响应行。
·假如在由.asp文件创立的客户端剧本中有毛病,行号其实不指向.asp文件的毛病行,而是指向毛病呈现的.asp文件的HTML输入行。为了检察这行,应在客户扫瞄器中检察HTML文件的源程序。
·VBScript和JScript毛病代码在附录D中。

7.5.3取得ASP的匡助和撑持
假如碰到一个不克不及处置的毛病,大概看来像ASP中的一个“bug”的事变,最好可以追求匡助以办理这个成绩。关于ASP在Web上有很多有效的信息源,第1章前面我们枚举了很多。可是,对一些特别成绩,的确必要一些更间接的匡助。
在盘算机上安装的ASP和IIS文档是一个好出发点,而且能经由过程扫瞄器的URL为http://yourservername/iishelp/举行会见。运转Windows2000的附加组件设置或主设置程序(依附于安装的Windows2000版本)时,应包管安装了全体的文档。
也能够从“MicrosoftforWindows2000”失掉的完全平台SDK,个中包括了大批关于Windows和Windows2000中Internet服务的附加信息。它包括完全的VBScript和JScript参考。它能够从微软取得,并供应给MSDN成员。剧本参考文档可独自取得,也能够从“http://www.microsoft.com/scripting/”网站下载。也可从这里取得剧本调试器。
微软开辟者收集(TheMicrosoftDevelopersNetwork,MSDN)Web站点也供应了很多撑持和匡助,即便这部分信息偶然难以找到。还能够从Workshop网站(http://msdn.microsoft.com/workshop/)入手下手,这个网站在右边导航栏中有很好的索引和一系列题目。
别的,位于http://msdn.microsoft.com/Library/default.htm的主MSDN库包括有文章、基本常识、FAQ和其他用于IIS和ASP的撑持质料,右边窗口利用一个Java扩大列表控件,利用户很简单举行查找。
假如必要出格的匡助,大概必要向其他开辟者提出一些成绩,在msnews.microsoft.com网站上有一些有效的旧事组。还能够定阅microsoft.public.inetserver.iis、microsoft.public.inetserver.activeserverpages和microsoft.public.inetserver.iis.misc。一些ASP网站也供应有关ASP方面的会商话题、论坛或谈天室。

7.6小结
本章会商的内容是年夜多半编程者最不喜好的事情。即便最复杂的剧本,也不成能就可以第一次准确地事情。跟着ASP供应愈来愈多的特征,在剧本中呈现毛病的时机也增添了。懂得怎样发明并处置毛病的相干基础常识,长短常需要的。
经由过程剖析大概呈现的分歧品种的毛病,弄分明缺省的ASP和剧本引擎毛病处置体系捕捉毛病的机理,避免把毛病和有效数据传给其他的使用程序。编程时呈现的毛病越少,越简单发明息争决它们。
但是,好的编程习气其实不能制止某些品种的毛病产生,比方那些由内部资本和服务酿成的毛病。这意味着供应本人的定制毛病处置代码,在呈现毛病时晓得怎样跟踪毛病并举行妥帖处置,长短常主要的。
最初,以对MicrosoftScriptDebugger的论述停止了本章,它是有助于找到息争决网页中的运转期毛病的一个有效的工具。它能够停息程序实行和举行单步实行,同时还可以察看程序在举行甚么,乃至可以和剧本举行交互。


缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。
作者: 再见西城    时间: 2015-1-20 06:09
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
作者: 愤怒的大鸟    时间: 2015-1-20 06:09
最近在学asp,不要问我为什么不直接学.net,因为公司网站是asp做的所以有这个需要,卖了本书asp入门到精通,对里面的六大内置对象老是记不住,还有很多属性和方法看的头晕。
作者: 简单生活    时间: 2015-1-26 18:14
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
作者: admin    时间: 2015-2-4 17:54
作为IE上广为流传的动态网页开发技术,ASP以它简单易学博得了广大WEB程序爱好这的青睐,而且它对运行环境和开发品台的不挑剔,以及有大量有效的参考手册,极大的推广了它的发展。
作者: 活着的死人    时间: 2015-2-10 04:39
Response:从字面上讲是“响应”,因此这个是服务端向客户端发送东西的,例如Response.Write
作者: 爱飞    时间: 2015-2-28 19:55
运用经典的例子。并且自己可以用他来实现一些简单的系统。如果可以对他进行进一步的修改,找出你觉得可以提高性能的地方,加上自己的设计,那就更上一个层次了,也就会真正地感到有所收获。
作者: 因胸联盟    时间: 2015-3-10 07:51
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
作者: 变相怪杰    时间: 2015-3-17 05:11
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
作者: 谁可相欹    时间: 2015-3-23 21:48
Request:从字面上讲就是“请求”,因此这个是处理客户端提交的东东的,例如Resuest.Form,Request.QueryString,或者干脆Request("变量名")




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2