WEB开发网      婵犵數濮烽弫鍛婄箾閳ь剚绻涙担鍐叉搐绾剧懓鈹戦悩瀹犲闁汇倗鍋撻妵鍕箛閸洘顎嶉梺绋款儑閸犳劙濡甸崟顖氬唨闁靛ě浣插亾閹烘鈷掗柛鏇ㄥ亜椤忣參鏌″畝瀣暠閾伙絽銆掑鐓庣仭缁楁垿姊绘担绛嬪殭婵﹫绠撻、姘愁樄婵犫偓娴g硶鏀介柣妯款嚋瀹搞儱螖閻樺弶鍟炵紒鍌氱Ч瀹曟粏顦寸痪鎯с偢瀵爼宕煎☉妯侯瀳缂備焦顨嗗畝鎼佸蓟閻旈鏆嬮柣妤€鐗嗗▓妤呮⒑鐠団€虫灀闁哄懐濮撮悾鐤亹閹烘繃鏅濋梺闈涚墕濡瑩顢欒箛鏃傜瘈闁汇垽娼ф禒锕傛煕閵娿儳鍩f鐐村姍楠炴﹢顢欓懖鈺嬬幢闂備浇顫夊畷妯肩矓椤旇¥浜归柟鐑樻尭娴滃綊姊虹紒妯虹仸闁挎洍鏅涜灋闁告洦鍨遍埛鎴︽煙閼测晛浠滃┑鈥炽偢閹鈽夐幒鎾寸彇缂備緡鍠栭鍛搭敇閸忕厧绶炴俊顖滅帛濞呭洭姊绘担鐟邦嚋缂佽鍊垮缁樼節閸ャ劍娅囬梺绋挎湰缁嬫捇宕㈤悽鍛婄厽閹兼番鍨婚埊鏇㈡煥濮樿埖鐓熼煫鍥ュ劤缁嬭崵绱掔紒妯肩畺缂佺粯绻堝畷姗€濡歌缁辨繈姊绘担绛嬪殐闁搞劋鍗冲畷顖炲级閹寸姵娈鹃梺缁樻⒒閳峰牓寮崒鐐寸厱闁抽敮鍋撻柡鍛懅濡叉劕螣鐞涒剝鏂€闂佺粯鍔曞Ο濠囧吹閻斿皝鏀芥い鏃囨閸斻倝鎽堕悙鐑樼厱闁哄洢鍔屾晶顖炴煕濞嗗繒绠婚柡灞界Ч瀹曨偊宕熼鈧▍锝囩磽娴f彃浜炬繝銏f硾椤戝洨绮绘ィ鍐╃厵閻庢稒岣跨粻姗€鏌ㄥ☉妯夹fい銊e劦閹瑩顢旈崟顓濈礄闂備浇顕栭崰鏍礊婵犲倻鏆﹂柟顖炲亰濡茶鈹戦埄鍐ㄧ祷妞ゎ厾鍏樺璇测槈閵忕姈鈺呮煏婢跺牆鍔撮柛鏂款槺缁辨挻鎷呯粙搴撳亾閸濄儳鐭撶憸鐗堝笒閺嬩線鏌熼崜褏甯涢柡鍛倐閺屻劑鎮ら崒娑橆伓 ---闂傚倸鍊搁崐鐑芥倿閿旈敮鍋撶粭娑樺幘濞差亜鐓涢柛娑卞幘椤斿棝姊虹捄銊ユ珢闁瑰嚖鎷�
开发学院WEB开发ASP ASP 3.0高级编程(二十八) 阅读

ASP 3.0高级编程(二十八)

 2001-03-16 09:51:30 来源:WEB开发网 闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷闂傚倸鍊搁崐椋庣矆娓氣偓楠炲鏁撻悩鎻掔€梺姹囧灩閻忔艾鐣烽弻銉︾厵闁规鍠栭。濂告煕鎼达紕校闁靛洤瀚伴獮鎺楀箣濠靛啫浜鹃柣銏⑶圭壕濠氭煙閻愵剚鐏辨俊鎻掔墛缁绘盯宕卞Δ鍐冣剝绻涘畝濠佺敖缂佽鲸鎹囧畷鎺戭潩閹典焦鐎搁梻浣烘嚀閸ゆ牠骞忛敓锟�婵犵數濮烽弫鍛婃叏椤撱垹绠柛鎰靛枛瀹告繃銇勯幘瀵哥畼闁硅娲熷缁樼瑹閳ь剙岣胯鐓ら柕鍫濇偪濞差亜惟闁宠桨鑳堕崝锕€顪冮妶鍡楃瑐闁煎啿鐖奸崺濠囧即閵忥紕鍘梺鎼炲劗閺呮稒绂掕缁辨帗娼忛埡浣锋闂佽桨鐒﹂幑鍥极閹剧粯鏅搁柨鐕傛嫹闂傚倸鍊搁崐椋庢濮橆兗缂氱憸宥堢亱闂佸湱铏庨崰鏍不椤栫偞鐓ラ柣鏇炲€圭€氾拷  闂傚倸鍊搁崐鐑芥嚄閼哥數浠氱紓鍌欒兌缁垶銆冮崨鏉戠厺鐎广儱顦崡鎶芥煏韫囨洖校闁诲寒鍓熷铏圭磼濡搫顫岄梺鍦拡閸嬪棝鎯€椤忓浂妯勯梺鍝勬湰濞叉ḿ鎹㈠┑濠勭杸闁哄洨濮烽悰銉╂⒒娴e搫甯跺鐟帮攻缁傚秴饪伴崼姘e亾閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡涱€楀褜鍠栭湁闁绘ɑ鐟ョ€氼喚绮绘ィ鍐╃厱妞ゆ劑鍊曢弸搴ㄦ煟韫囧鍔滈柕鍥у瀵潙螣閸濆嫬袝婵$偑鍊戦崹娲偡閳哄懎绠栭柍鈺佸暞閸庣喖鏌曢崶褍绨婚柟鍑ゆ嫹
核心提示:6.2.11Logging Utility组件 Logging Utility组件是asp 3.0的新组件,提供了访问日志文件的方法,ASP 3.0高级编程(二十八),这个日志文件是由服务器支持的用于Web和FTP网站的IIS创建的,1.Logging Utility组件的成员Logging Utility组件提供了六
6.2.11 Logging Utility组件
    Logging Utility组件是asp 3.0的新组件,提供了访问日志文件的方法,这个日志文件是由服务器支持的用于Web和FTP网站的IIS创建的。
1. Logging Utility组件的成员
Logging Utility组件提供了六种方法,能读取日志文件的内容、把新记录写进已存在的日志文件中。这些方法和上一章讨论的FileSystemObject对象的方法有相似性,如表6-9所示:
表6-9 Logging Utility组件的方法及说明
方 法
说 明

AtEndOfLog()
用ReadLogRecord方法遍历记录时,如果文件中的所有记录都已读出,返回值为True

CloseLogFiles(io_mode)
关闭打开的日志文件,io_mode的值指定要关闭的文件,常数ForReading(1)表示关闭打开供读出的所有文件, ForWriting(2)表示关闭打开供写入的所有文件,AllOpenFiles(32)表示关闭打开的所有文件

OpenLogFile(filename,io_mode,
service_name,service_instance,
output_format)
打开filename指定的日志文件或日志文件集,可选的io_mode参数可以设置成ForReading(缺省值,1)或 ForWriting(2)。当读取取一个特定的IIS服务(例如“W3SVC”和“1”)时,可选的service_name和 service_instance参数限制从文件中返回的记录。可选的output_format参数指明写入文件时使用的格式 

ReadFilter(start,end)
当在规定的时间和日期范围内读取文件时,限制返回的记录,两个参数都是可选的,如果忽略的话,start是文件的第一个记录,end是最后一个记录

ReadLogRecord()
从用OpenLogFile方法打开的当前日志文件中读取下一个记录

WriteLogRecord(logging_object)
从打开供读出的文件中把记录写入一个打开供写入的文件中,参数logging_object是一个引用保存源记录的 Logging Utility组件实例的对象变量

Logging Utility组件提供了二十种与IIS日志记录相对应的属性,如表6-10所示:
表6-10 Logging Utility组件的属性及说明
属 性
说 明

BytesReceived
请求时从浏览器收到的字节数

BytesSent
响应时送至浏览器的字节数

Clientip
客户机或其主机(即代理服务器)的IP地址

Cookie
在请求中传送的cookie内容

CustumFields
加到请求中的定制报头的一个数组

DataTime
请求的日期和时间(GMT)

Method
操作类型,如“Get”和“Post”

PRotocolStatus
返回到客户机的状态消息,即“200 OK”

ProtocolVersion
协议版本字符串,如“HTTP/1.1”

Referer
包含初始化请求链接的网页的URL

ServerIP
IIS机器的IP地址

ServerName
IIS服务器的机器名

ServerPort
请求到达的端口号,如“80”

ServiceName
服务器名称,如“MSFTPSVC”或“W3SVC”

TimeTaken
检索和创建网页的总处理时间

URIQuery
请求中加到URL的查询字符串中的所有参数

URIStem
请示的目标URL

UserAgent
由客户机发送的用户代理字符串

UserName
如果不是匿名地访问服务器,UserName是用户的登录名

Win32Status
处理了请求后返回的Win32状态码

2. 使用Logging Utility组件
Logging Utility组件最普遍的应用是用于对日志文件的自定义查询。从现有文件中选择一些记录写入新文件的能力,意味着能够汇总某些类型的条目,或者有选择性地挑出一些记录将来使用。
为了使用ForReading、ForWriting和AllOpenFiles常数,必须在网页的<HEAD>部分包含METADATA指令。
<!-- METADATA TYPE="typelib" FILE="C:\WINNT\system32\inetsrv\logscrpt.dll" -- >
为了遍历记录,仅须打开文件并且重复调用ReadLogRecord,直到AtEndOfLog的返回值为True。在下面的例子中将过滤记录,仅获得最后24小时以内的记录。
'Create the component instance
Set objLogUtil = Server.CreateObject("MSWC.IISLog")

'open the log file for reading, for the W3SVC instance number 1
objLogUtil.OpenLogFile "extend#.log", ForReading, "W3SVC", 1, 0

'set a filter for the last day's records only
objLogUtil.ReadFilter DateAdd("d", -1, Now), Now

'loop through the records
Do While Not objLogUtil.AtEndOfLog
  objLogUtil.ReadLogRecord 'read the next record
  Response.Write "Request received for page " & objLogUtil.URLStem & " on " _
          ;  & objLogUtil.DateTime & " from IP address " _
          ;  & objLogUtil.ClientIP & ".<BR>"
Loop
objLogUtil.CloseLogFiles(ForReading)         'close the file(s)
本书提供了演示使用Logging Utility组件的一个示例网页,这个网页可以从ASP Installable Components主菜单运行。
确保在Internet Services Manager中不允许匿名访问包含示例文件的目录或loggingutility.asp文件,否则将不能访问日志文件。打开loggingutility.asp文件或包含该文件的目录的Properties对话框的Directory Security选项卡,点击 Anonymous access and authentication control部分的Edit按钮,打开Authentication Method对话框,并关闭 Anonymous access选项。
必须改变日志文件的文件名以适合你的计算机。在缺省Web网站的Properties对话框的Web Site选项卡中,打开W3C Extended Logging,如图6-22所示:

图6-22 使用Logging Utility组件的设置1
在这个对话框中,点击Properties按钮,打开Extended Logging Properties对话框,在这里会打开要用的文件名。选择固定大小的日志文件选项,这样文件名将是extend1.log和extend2.log等等。如图6-23所示:

图6-23 使用Logging Utility组件的设置2
打开Extended Properties选项卡,确保选中想要的条目,如图6-24所示:

图6-24 使用Logging Utility组件的设置3
现在可以运行示例网页并检查结果,可以使用下列代码在HTML表中显示数值。
<%
Set objLogUtil = Server.CreateObject("MSWC.IISLog")
objLogUtil.OpenLogFile "extend#.log", ForReading, "W3SVC", 1, 0
objLogUtil.ReadFilter DateAdd("d", -1, Now), Now
%>
<TABLE CELLPADDING="10">
<TR>
<TH>Date/Time</TH>
<TH>Client IP</TH>
<TH>Bytes Sent</TH>
<TH>Target URL</TH>
</TR>
<%
Do While Not objLogUtil.AtEndOfLog
  objLogUtil.ReadLogRecord 'read the next record
%>
<TR>
<TD><% = objLogUtil.DateTime %></TD>
<TD><% = objLogUtil.ClientIP %></TD>
<TD><% = objLogUtil.BytesSent %></TD>
<TD><% = objLogUtil.URLStem %></TD>
</TR>
<%
Loop
objLogUtil.CloseLogFiles(ForReading)
%>
其结果如图6-25所示:

图6-25 使用Logging Utility组件的示例运行结果

6.3 第三方服务器组件
    在本节中,简要概述ASP系统中要用到的一些常见的商用和免费的第三方服务器组件。
    开发Web网站时,必须完成的两个任务是管理兼容性以及向服务器上载文件。下面将介绍的两个组件能有助于完成上述的任务,而且还介绍另外一个组件,可取代Microsoft的Registry Access组件(该组件一般是从相应的Web网站得到的)。
    在附录G中,给出了一些最为有用的组件的清单。

6.3.1 BrowserHawk组件
    很多人使用由IIS及ASP提供的Browser Capability组件时,都会遇到一个麻烦,浏览器的定义文件(browscap.ini)要求定期的维护或替换以跟得上新版浏览器的要求。
    Cyscape公司提供了broscap.ini的升级版本,同时提供了他们自己的能在服务器端和客户端进行浏览器检测的组件。而且,还提供了便捷的图形界面用于查看及修改自己的浏览器定义文件,如图 6-26所示:

图6-26 BrowserHawk组件
    可以看到对于每个浏览器类型,都有许多属性,如动态HTML、样式表、 javaScript版本、文件上载能力、SSL(Secure Sockets Layer)支持、操作系统细节以及语言等。与Microsoft的 Browser Capability组件一样,也可以添加自己的内容。这里还有一个非常有用的具有向导风格的特性,能帮助我们把新的浏览器类型添加到定义文件中,如图6-27所示:

图6-27 向定义文件添加新浏览器的向导
    BrowserHawk组件具有辩认出新的浏览器(采用一项特殊的模式匹配算法)以及那些缺省支持的一系列浏览器的能力,包括Opera和WebTV。使用过滤功能添加新属性也很容易。
    当然,BrowserHawk组件的最大优点可能是定期对来自Cyscape公司的Web网站的浏览器定义文件新版本进行自动检测,同时把一些内容吸收合并到当前使用的定义文件里,这意味着没有必要不断地将定义文件拷贝到所有的Web服务器中。
    BrowserHawk组件使用起来比较容易,与Browser Capability组件是兼容的,需要做的是在创建组件实例的Server.CreateObject方法或<OBJECT>元素中改变ProgID。把 “MSWC.BrowserType”改为“cyScape.browserObj”。
    Set objBCap = Server.CreateObject(“cyScape.browserObj”)
    对可能出现的问题,应该阅读BrowserHawk组件的文档。    可从Cyscape公司的Web网站(http://www.cyscape.com)下载BrowserHawk 的拷贝。本章中已经包含了使用BrowserHawk组件的示例网页,使读者能够了解如何使用BrowserHawk组件,在Chapter06目录下的BrowserHawk子目录中可查找到这个示例页面。

Tags:ASP 高级 编程

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接