|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
ASP是依赖组件的,能访问数据库的组件好多就有好多种,再有就是你微软的工具可是什么都要收钱的啊!编程|初级7.4.4利用IIS毛病页面
与ASP毛病处置历程相干的内容是为IIS供应可定制的毛病页面。现实上,在IIS4.0中也有这个特性。但新的ASP内置工具ASPError,更容易于利用且供应加倍壮大的功效。
在第4章,当我们研讨Server.Execute和Server.Transfer办法时,已报告了怎样创建定制的毛病页面。我们也会商和利用了ASPError工具,但这类体例遭到了必定的限定。在这一部分,将先容怎样将定制的毛病网页和ASPError工具分离起来创建一个更好的处置ASP毛病的办法。
我们可使用VBScript反省ASPError工具的内容,从而创立一个定制的毛病页面。构建一个包括毛病内容周全信息的字符串,且写进到服务器磁盘上的日记文件中。但是网页的计划仅使会见者看到网页不成用如许一条信息是不可的,应当使会见者可以选择是从头载进上一个网页仍是回到主页,使他们没认识已产生了毛病。
只管我们接纳VBScript创立这个网页,但其利用的一些特征对JScript来讲也是合用的,这两种剧本言语的互相转换也是对照简单的。
能够从http://www.wrox.com站点下载本章及本书其他章节的示例文件。
1.设置定制的毛病页面
在能利用定制的毛病页面之前,必需在InternetServicesManager举行响应的设置(设置体例见第4章)。把示例文件装进盘算机的wwwroot目次中,翻开Chapter07子目次的Properties对话框,在CustomErrors选项卡中,转动列表并选中HTTP毛病“500:100”条目,点击EditProperties按钮,并键进定制的毛病页面Custom_error.asp的URL,如-17所示:
-17CustomErrors选项卡
如今Chapter07子目次中的页面呈现一个ASP毛病时,就会翻开定制的毛病页面。
2.利用定制的毛病页面
在扫瞄器中翻开Chapter07目次并选择到“UsingaCustomErrorPage”的链接,这个页面显现了一系列用于发生各类范例的毛病的按钮,点击标有“LoadaPagewithaSyntaxerror”的按钮,如-18所示:
-18演示定制毛病页面的屏幕1
这将载进一个名为syntax_error.asp的复杂页面。但是看不到这个页面,由于这个页面包括了一个语法毛病。ASP停止这个页面的编译/实行,并把实行转到定制毛病页面,这个页面展现了毛病的细节和两个按钮,这两个按钮用以前往上个页面(主菜单)或前往Web站点的缺省主页,如-19所示:
-19演示定制毛病页面的屏幕2
这个页面也把毛病呈报追加到服务器磁盘C: emp文件夹中名为custom_error.log的日记文件中,能够在文件编纂器中翻开并检察它,-20所示的日记文件已纪录了几个毛病。
-20日记文件
假如在页面中失掉了一个信息,指嫡志文件不克不及写进信息,多是由于IUSR_machinename(IUSR_盘算机名)帐号没有会见C: emp目次的权限。当测试这个页面时,应当赐与IUSR_machinename帐号对这个目次的全体把持权,大概改动custom_error.asp页面的程序代码以指向一个IUSR有全体把持权的文件夹
毛病动静呈现在页面中的独一缘故原由,是由于在cause_error.asp页面中我们选择了响应的复选框。假如封闭该选项并再次点击按钮,便看不到毛病的具体情形,但是毛病信息仍旧纪录在服务器磁盘上的custom_error.log毛病日记文件中。
“Displaydebugginginformation”复选框给定制毛病页面(而不是日记文件)供应了更多的信息,有助于调试那些利用ASP内置工具汇合值的页面,如-21所示:
-21cause_error.asp页面的选择框
在本章上面部分,将再会商这一成绩,同时也能够懂得“CauseAnError”页面上的其他按钮所供应的其他品种的毛病信息。注重有一些按钮可以比其他的按钮可以供应更多信息。出格是只要最初一个按钮给出ASP毛病代码的值(这里是ASP0177)。
(1)“CauseAnError”页面的功效
与先前会商的示例页面一样,引发毛病的页面利用一样的手艺,用<Form>把值提交给统一个页面。然后ASP程序检察窗口上点击的是谁人SUBMIT按钮,然后运转代码的响应部分。同时检察是不是页面上两个复选框是不是选中,假如是如许,程序起首设置一个或两个会话级的变量以指明这一点。
<%
seeifwearedisplayingerroranddebuginformation
setsessionvariablestoretrieveinthecustomerrorpage
IfLen(Request.Form("chkShowError"))Then
Session("ShowError")="Yes"
Else
Session("ShowError")=""
EndIf
IfLen(Request.Form("chkShowDebug"))Then
Session("ShowDebug")="Yes"
Else
Session("ShowDebug")=""
EndIf
...
%>
因为利用了Server.Transfer,当毛病产生时,正在运转的网页的全部ASP情况由IIS传给定制毛病页面。但是,剧本变量的值并没有传给定制毛病页面,以是必需利用Session变量,大概把值增加到Request.Form或Request.QueryString汇合以便把值传送给定制毛病页面。
设置了Session变量以后,程序持续检察点击了哪一个按钮。每一个范例的毛病(除第一范例外),都是由运转响应的ASP代码发生的,第一范例的毛病必要挪用另外一个页面。
...
lookforacommandsentfromtheFORMsectionbuttons
IfLen(Request.Form("cmdSyntax"))Then
Response.Clear
Response.Redirect"syntax_error.asp"
EndIf
IfLen(Request.Form("cmdParamType"))Then
intDate="error"
intDay=Day(intDate)
EndIf
IfLen(Request.Form("cmdArray"))Then
DimarrThis(3)
arrThis(4)="Causesanerror"
EndIf
IfLen(Request.Form("cmdFile"))Then
SetobjFSO=Server.CreateObject("Scripting.FileSystemObject")
SetobjTStream=objFSO.OpenTextFile("does_not_exist.txt")
EndIf
IfLen(Request.Form("cmdPageCount"))Then
SetobjPageCount=Server.CreateObject("MSWC.PageCounter")
objPageCount.WrongProperty=10
EndIf
IfLen(Request.Form("cmdObject"))Then
SetobjThis=Server.CreateObject("Doesnot.Exist")
EndIf
</p>[1][2][3]下一页
楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。 |
|