hd0N.2,m如m103 下载 表4-1服务器端包含指令及说明 #include 把一个指定文件的内容插入到将被发送给客户端的响应流中并代替该指令。例如: < 这条指令把名为 usefulbits inc文件的内容插入到响应中。这个文件可以由一个相对或全路径 文件名的组合描述,如FILE=" lscriptslmyscr inc"。通过使用Ⅴ RTUAL属性,可使用一个虚 的相对或绝对路径来描述它,例如: include VIRTUAL="/mysite/usefulbits inc 普主 nclude vIrTUAl=”,./../ thisis/ usefulbits.inc” #config 说明在其后的指令中将用于数据、时间和文件大小以及返回给客户端的一般性的SSI错误信 息的文本的格式。例如: sconfig ERRMSG="ssI Processing error 设置SSI错误信息内容为 SSI Processing Error 排 config TIMEEMT="暑A,8B8d暑M播S"--> 设置由其后的SSI指令返回的日期和时间的格式。这个例子设置了一个格式风格: Saturday August14199910:34:50。可以用于格式字符串的标志的列表在附录C中给出 #config SIZEEMT ="BYTES 设置由其后的IS指令返回的文件大小的单位。这个例子设置单位为字节。对 SIZEFMT可供 选择的值是" ABBREV",指明计算值将以千字节(KB)返回文件的大小 把一个HTTP环境变量的值插入到发送给客户端的响应流中并替换该指令。例如: OT VAR=SERVER NAME 写出正在执行指令到该网页的服务器的名字 执行一个程序或一个服务器外壳命令,例如 <!--#exec CGI="/scripts/myapp. exe? valuel= this value2= that 执行名为 myapp. exe的cG程序,允许传递查询字符串,程序在单独内存中执行 #execCMD="cmd. exe/c iisreset/s 动特定操作系统命令解释器( cmo.exe并执行命令 msreset/stop。/表示当命令结束时,命 令解释器也结束。使用CMO要添加下列注册表项: HKEY LOCAL MACHINE/SYSTEM/Currentcontrolset/services/w3svC /Parameters/ssIEnablecmdDirective 设置值为1,并重启动wwW服务,就允许CMD标志用于#exec指令中。值为0,则禁止使用, 并防止未验证的使用 #flastmod 把一个指定的文件上一次修改的日期和时间插入到发送给客户端的响应流中并代替该指令 例如: 像# include指令一样,也可以使用虚拟路径对该文件进行定义,如: VIRTUAL="/mysite/usefulbits inc 或 VIRTUAL="./thisbit/use fulbits inc 把一个指定的文件的大小插入到发送给客户端的响应流中并代替该指令。例如 < --ffsize FILE="Default. asp"--> 象# include指令一样,也可以使用虚拟路径对该文件进行定义,如: VIRTUAL="/mysite/usefulbits inc VIRTUAL="./thisbit/usefulbits inc" IISRESET实用程序 lIsreset. exe是由IS50提供的一个新的实用程序。作为一个命令行的实用程序,如果用于 执行该实用程序的帐号具有管理员权限,它对于控制运行在本地或一个网络计算机上的
表4-1 服务器端包含指令及说明 指 令 说 明 # i n c l u d e 把一个指定文件的内容插入到将被发送给客户端的响应流中并代替该指令。例如: < ! -- # include FILE = "usefulbits.inc " -- > 这条指令把名为u s e f u l b i t s . i n c文件的内容插入到响应中。这个文件可以由一个相对或全路径 与文件名的组合描述,如 F I L E = " . . \ s c r i p t s \ m y s c r. i n c "。通过使用V I RT U A L属性,可使用一个虚 拟的相对或绝对路径来描述它,例如: < ! -- #include VIRTUAL="/mysite/usefulbits.inc" -- > < ! -- #include VIRTUAL="../../thisbit/usefulbits.inc" -- > # c o n f i g 说明在其后的指令中将用于数据、时间和文件大小以及返回给客户端的一般性的 S S I错误信 息的文本的格式。例如: < ! -- #config ERRMSG="SSI Processing Error" -- > 设置S S I错误信息内容为'SSI Processing Error'。 < ! -- #config TIMEFMT = "%A, %B %d %Y %H :% M:%S" -- > 设置由其后的S S I指令返回的日期和时间的格式。这个例子设置了一个格式风格: S a t u r d a y, August 14 1999 10:34:50。可以用于格式字符串的标志的列表在附录 C中给出。 < ! -- #config SIZEFMT = "BYTES" -- > 设置由其后的I I S指令返回的文件大小的单位。这个例子设置单位为字节。对 S I Z E F M T可供 选择的值是" A B B R E V ",指明计算值将以千字节( K B )返回文件的大小 # e c h o 把一个H T T P环境变量的值插入到发送给客户端的响应流中并替换该指令。例如: < ! -- #echo VAR="SERVER_NAME" -- > 写出正在执行指令到该网页的服务器的名字 # e x e c 执行一个程序或一个服务器外壳命令,例如 <!--#exec CGI="/scripts/myapp.exe? valuel= this & value2= that--> 执行名为m y a p p . e x e的C G I程序,允许传递查询字符串,程序在单独内存中执行。 <!--#execCMD="cmd.exe/c iisreset/stop" - -> 启动特定操作系统命令解释器 ( c m o . e x e )并执行命令m s r e s e t / s t o p。/ c表示当命令结束时,命 令解释器也结束。使用C M O要添加下列注册表项: H K E Y _ L O C A L _ M A C H I N E / S Y S T E M / C u r r e n t C o n t r o l S e t / S e r v i c e s / w 3 S V C /Parameters/SSIEnableCmdDirective 设置值为1 ,并重启动W W W服务,就允许 C M D标志用于# exec指令中。值为 0 ,则禁止使用, 并防止未验证的使用 # f l a s t m o d 把一个指定的文件上一次修改的日期和时间插入到发送给客户端的响应流中并代替该指令。 例如: < ! -- #flastmod FILE="Default.asp" -- > 像# i n c l u d e指令一样,也可以使用虚拟路径对该文件进行定义,如: V I R T U A L = " / m y s i t e / u s e f u l b i t s . i n c " 或 V I R T U A L = " . . / t h i s b i t / u s e f u l b i t s . i n c " # f s i z e 把一个指定的文件的大小插入到发送给客户端的响应流中并代替该指令。例如: < ! -- #fsize FILE="Default.asp" -- > 象# i n c l u d e指令一样,也可以使用虚拟路径对该文件进行定义,如: V I R T U A L = " / m y s i t e / u s e f u l b i t s . i n c " 或 V I R T U A L = " . . / t h i s b i t / u s e f u l b i t s . i n c " 1. IISRESET实用程序 i i s r e s e t . e x e是由IIS 5.0提供的一个新的实用程序。作为一个命令行的实用程序,如果用于 执行该实用程序的帐号具有管理员权限,它对于控制运行在本地或一个网络计算机上的 第 4章 服务器进程和A S P S e rv e r对象计计103 下载
104 SP3高级编程 Chinaopub.com 下载 Internet连网服务是非常有用的。它可用于以正确的顺序停止或启动所有的服务、显示服务的 状态、重新引导服务器以及允许或禁止服务的管理。例如: iisreset /RESTART /TIMEOUT: 30 /REBOOTONERROR 这将以正确的顺序停止和重新启动所有 Internet服务。如果一种服务在指定的超时周期(30 秒)内未能停止或重新启动,服务器将重新引导。可以用在CMD类型的# cho ssi指令中的 些开关,使该页面不能进行匿名访问并且要求用户提供在目标服务器上具有管理员权限的有 效帐号的详细情况。这个实用程序的完整描述和可用的命令开关在附录C中。 2. NET STOP和 NET START命令 如果用来执行实用程序 net. exe的帐号具有管理员权限,它可以用来管理服务器上运行的 任何服务(既可以是本地的也可以是来自其他的一个计算机)。虽然不提倡把该程序用于 Internet服务(如wwW或FTP服务),但其停止和启动其他服务的功能是非常有用的。事实上, net命令同样可以用于一系列的其他网络相关命令 语法是 service name 例如,可以用命令 net stop cisvc和 net start cisse来停止和启动 Microsoft indexing service 可以用CMD类型的# echo SsI指令使该页面不能进行匿名访问并要求用户提供在目标服务器上 具有管理员权限的有效帐号的详细情况。稍后将看到一个这样的例子 在 Windows200帮助文件中可以找到ne命令的所有选项和开关的一个完整列表。 从 Start菜单中选择Help项,在Help窗口的 Index页查找“ net commands" 42.3服务器端包含指令的例子 本节提供了一些示例页面,可以用来对各种服务器端包含语句进行实验。打开示例网页 的子目录 Chapter04,显示“ SSI Directives and the ASP Server Object”主页(即子目录 Chapter4中的 Default. asp),如图4-3所示。 3551 Directives and the A5P Server Object.Microsoft Ind Ele Edr yiew Favose Iooks Hep SSI Directives and the ASP Server object Statements Jsing the rexec sE Side Include Directive Lsnaa ASP sarver obc e1999 Wrox Press-Professonel AsP 3. D(tsBN: 1-861002-61-D 图4-3示例网页 本书的所有示例都可以从我们的web网站下载。读者将在示例的子目录 Chapter4中发现本章其余部分的所有示例页面a
I n t e r n e t连网服务是非常有用的。它可用于以正确的顺序停止或启动所有的服务、显示服务的 状态、重新引导服务器以及允许或禁止服务的管理。例如: 这将以正确的顺序停止和重新启动所有 I n t e r n e t服务。如果一种服务在指定的超时周期 ( 3 0 秒)内未能停止或重新启动,服务器将重新引导。可以用在 C M D类型的#echo SSI指令中的一 些开关,使该页面不能进行匿名访问并且要求用户提供在目标服务器上具有管理员权限的有 效帐号的详细情况。这个实用程序的完整描述和可用的命令开关在附录 C中。 2. NET STO P和NET STA RT命令 如果用来执行实用程序 n e t . e x e的帐号具有管理员权限,它可以用来管理服务器上运行的 任何服务 (既可以是本地的也可以是来自其他的一个计算机 )。虽然不提倡把该程序用于 I n t e r n e t服务(如W W W或F T P服务),但其停止和启动其他服务的功能是非常有用的。事实上, n e t命令同样可以用于一系列的其他网络相关命令。 语法是: net [ start | stop ] service_name 例如,可以用命令net stop cisvc和net start cisvc来停止和启动Microsoft Indexing Service。 可以用C M D类型的#echo SSI指令使该页面不能进行匿名访问并要求用户提供在目标服务器上 具有管理员权限的有效帐号的详细情况。稍后将看到一个这样的例子。 在Windows 2000帮助文件中可以找到n e t命令的所有选项和开关的一个完整列表。 从S t a r t菜单中选择H e l p项,在H e l p窗口的I n d e x页查找“net commands”。 4.2.3 服务器端包含指令的例子 本节提供了一些示例页面,可以用来对各种服务器端包含语句进行实验。打开示例网页 的子目录 C h a p t e r 0 4,显示“ SSI Directives and the ASP Server Object”主页 (即子目录 C h a p t e r 0 4中的D e f a u l t . a s p ),如图4 - 3所示。 图4-3 示例网页 本书的所有示例都可以从我们的 We b网站下载。读者将在示例的子目录 C h a p t e r 0 4中发现本章其余部分的所有示例页面。 104计计ASP 3 高级编程 下载
Chinapub.comwui&sAReMasSmorwg105 载 1.使用SSI/CGI处理指令 单击链接进入“ Server- Side include and cgi statements”页面,这将打开 SSI cg1.stm网页 需要注意的是该页面的文件扩展名为stm,表明这不是一个ASP网页。该页面使用了前面已经 讨论过的除#xec指令(稍后将看到)以外的所有SS指令,且显示指令的使用方法和结果,如图 assl and CGI Instractions- Micotoll Intenet Explore SSI and CGI Instructions Including Files with SSI been nserted nt the page usng the ServerSide Incude (ssi)structon: ado fon"ta.n一 SSI Statements <- config ERRMSG=sS Processng Error"-> (sets error message n case of ssI error Details of file Default asp sconfi SIzEFMTsBYTE5-> (sets fsize to retrn size n bytes) chee FlE='Default. asp->returns: 121 byte sconfig TIMEFMT= "%A, .B %d %Y %+: %.M: %"-->(sets for mat for date/time results) <- ffastmod FILE=Default asp->reurns: Saturday, August 14 1999 10: 34: 50 Http Variables echo VAR=战THT…> return fecho VAR="AUTH PASSWORD"-> returns <l-fecto VAR=TONTENT_LENGTH"->returns:0 - fecho VARa DOCUMENT_NAME"-> returns: c: \in <l- Fecho VAR=DOCUMENT_URI+>returns:/2610/ cl- fecho VAR=DATE- GMT-->returns: Thursday, Au ychapter04/ss_cg/ss_cgl stm seco VAR=DATE LOCAL"->rerms: Thursday, August 19 1999 13: 10: 46 echo VARe GATEWAY_INTERFACE'>retums: CGI/1.1 <I- echo VAR=HT TP_ACCEPT"->returns: appication/ msword, appia 图4-4示例网页显示的 SSI/CGI处理指令情况 (1)# include指令 该页的开始部分“ Include files with ssi”,显示名为 intro. inc的另一个单独文件的内容。 下面是该文件的全部内容: 注意我们必须使用HTML条目“<”和“>”来显示网页中的尖括号。如 果不这样做,它们就不能被当作注解元素部分看待,并引起其中的指令被执行。 在主 SSI cgl. stm页面中,把这个文件插入到该页中的代码是很简单的 <!--#include file="intro. inc (2)# config、# Resize和# flastmod指令 网页下一部分显示了与该页面在相同的目录中的文件 Default. asp的大小和最后被修改的时 间。这里三次使用了#onig指令: 次是设置SSI错误信息 次是设置日期和时间的格式 次是设置文件大小计算的格式 使用# fsize和# lasted指令把值插入到该网页中: <P><DIV CLASS= '>sSI Statements</DIv> <:!--#config ERRMSG="SSI Processing Error.-->:
1. 使用S S I / C G I处理指令 单击链接进入“S e r v e r-Side Include and CGI Statements”页面,这将打开s s i _ c g i . s t m网页。 需要注意的是该页面的文件扩展名为 . s t m,表明这不是一个A S P网页。该页面使用了前面已经 讨论过的除# e x e c指令(稍后将看到)以外的所有S S I指令,且显示指令的使用方法和结果,如图 4 - 4所示。 图4-4 示例网页显示的S S I / C G I处理指令情况 (1) #include指令 该页的开始部分“ Include Files with SSI”,显示名为i n t r o . i n c的另一个单独文件的内容。 下面是该文件的全部内容: 注意我们必须使用H T M L条目“& l t;”和“& g t;”来显示网页中的尖括号。如 果不这样做,它们就不能被当作注解元素部分看待,并引起其中的指令被执行。 在主s s i _ c g i . s t m页面中,把这个文件插入到该页中的代码是很简单的: (2) #config、# f s i z e和# f l a s t m o d指令 网页下一部分显示了与该页面在相同的目录中的文件 D e f a u l t . a s p的大小和最后被修改的时 间。这里三次使用了# c o n f i g指令: • 一次是设置S S I错误信息。 • 一次是设置日期和时间的格式。 • 一次是设置文件大小计算的格式。 使用# f s i z e和# f l a s t m o d指令把值插入到该网页中: 第 4章 服务器进程和A S P S e rv e r对象计计105 下载
106:;商程 Chinaopub.com (sets error message in case of ssI error)<BR> <!-- #config ERRMSG="SSI Processing Error.--><P> Details of file 'Default. asp: <BR> &1t;!-# config s工ZEF=" BYTES·--> (sets fsize to return size in bytes)<BR> 1t;!--#f FILE="Default. asp.--> returns: <B><!--#fsize FILE-'Default asp'--> bytes</B><BR> (set config TIMEFMT="告A,B影Y暑H:别M:8s·一-gt;&nbBp format for date/time results)<BR> <!--#config TIMEFMI="A, %B d bY H: sM: %s'--> <I--#flastmod FILE='Default. asp.-->: returns: <B><!--#flastmod file="Default. asp /B><P 3)#echo指令 该页的最后部分(在屏幕上只能看到一部分)显示可以使用#echo指令访问的所有HTTP报头 的内容。每一行的代码都是相同的,仅仅是VAR属性值有变化。附录G中给出了VAR属性的所 有容许值的一个完整列表。 <div Class="subHead>Http Variables</div> #echo vAR"AUTH_TYPE.-->i returns: <B><! echo var="AUTH_TYPE &1t;!--#ech。VAR=" AUTH PASSWORD·--> returns: <B><I --#echo var="AUTH_ PASSWORD.--></B><BR> 2.使用#exec指令 #exec指令与其他的SSI指令相比使用起来困难一些,正因为如此,将其独立地放到了另 个页面上。可以从“ ASP Sever Object and ssI Directives”主菜单上访问启动页面。 在该页面上,选择“ Using the# echo E The SSI Bewec Duective. Micronolt Inte回 Server- Side include directive”链接。这个 操作打开“ The ssi# exec Directive”页面, The SSi #exec Directive 如图4-5所示。 这是一个ASP网页 sSI exec. aspo两个‖ Stopping and Starting a Service 按钮用来打开.stm页面,该页面执行其中 使用#exec指令所描述的动作 a stop the Microsoft Indexing Service (1)在服务器上运行这个示例 Start the Microsoft Indexing Service 在SSI#exec指令示例能够在服务器上 工作之前,必须对一些配置进行修改。首 o1999Wrox Press- Professonal ASP 3, Q(IsBN: 1-861002-61-0 先,需要在Web服务器的注册表中创建 SSIEnableCmdDirective项(类型 DWORD), 图45“ The ssi# exec Directive”网页 位置在下面的键名下 HKEY LOCAL_ MACHINE\ SYSTEM\ CurrentcontrolSet\Services\W3SvC\Parameter 然后设置该值为1,如图4-6所示。 这样就允许#exec指令与CMD属性一起使用。 其次,必须对包含使用#exec指令的.stm文件的目录禁止匿名访问,客户端将被强制提供
(3) #echo指令 该页的最后部分(在屏幕上只能看到一部分 )显示可以使用# e c h o指令访问的所有H T T P报头 的内容。每一行的代码都是相同的,仅仅是 VA R属性值有变化。附录G中给出了VA R属性的所 有容许值的一个完整列表。 2. 使用# e x e c指令 # e x e c指令与其他的 S S I指令相比使用起来困难一些,正因为如此,将其独立地放到了另 一个页面上。可以从“ASP Sever Object and SSI Directives”主菜单上访问启动页面。 在该页面上,选择“ Using the #echo S e r v e r-Side Include Directive”链接。这个 操作打开“The SSI #exec Directive”页面, 如图4 - 5所示。 这是一个A S P网页s s i _ e x e c . a s p。两个 按钮用来打开 . s t m页面,该页面执行其中 使用# e x e c指令所描述的动作。 (1) 在服务器上运行这个示例 在SSI #exec指令示例能够在服务器上 工作之前,必须对一些配置进行修改。首 先,需要在 We b服务器的注册表中创建 S S I E n a b l e C m d D i r e c t i v e项(类型D W O R D ), 位置在下面的键名下: 然后设置该值为1,如图4 - 6所示。 这样就允许# e x e c指令与C M D属性一起使用。 其次,必须对包含使用 # e x e c指令的. s t m文件的目录禁止匿名访问,客户端将被强制提供 106计计ASP 3 高级编程 下载 图4-5 “The SSI #exec Directive”网页
inapub.commaBsHeFrASSneWg107 下载 帐号的详细情况,该帐号应是一个具有管理员级权限的帐号。这也是net命令正常工作的要 Pavor 白w3sc (a) RFG 5 (valum not ser) 主Q ablAcceseDeriedMessace REG_5Z Ercc Aaess Dened C:wNT5ytm钟时vsm的 cnADCaunch ablinstyipath n Satt Map R6_5 F stud Roots REG DWORD Ox0000o00s(5) PErfomance REG DWORD OD0000000(0) n Security ssanabedmdDrectme N RL DwoRD 0et000001(1) 图46注册表中的设置 激活 Internet Services Manager应用程序,并选择包含使用#exec指令的stm文件的目录(在 示例中,这些文件是exec目录下的 start CIsvc.stm和 stop cisvc.stm)。然后打开该目录的 Properties对话框。在 Directory Security选项卡中单击 Anonymous access and authentication control区域中的Edit按钮,打开 Authentication methods对话框,如图4-7所示 used a Moyno Nc F)ac ouherdcoon espioefi w nc图 Seect a a dsn 图4-7设置验证方法的对话框 在这个对话框中不选中 Anonymous access复选框。如果不使用 Internet Explorer访问该页 面,打开 Basic authentication选项以允许非IE浏览器通过提交用户名/口令访问该页面。设置时, 会出现一个有关安全性的警告,单击Yes。现在浏览器将被强制出示合适的帐号和身份证明
帐号的详细情况,该帐号应是一个具有管理员级权限的帐号。这也是 n e t命令正常工作的要 求。 图4-6 注册表中的设置 激活Internet Services Manager应用程序,并选择包含使用 # e x e c指令的. s t m文件的目录(在 示例中,这些文件是 e x e c目录下的 s t a r t _ c i s v c . s t m和s t o p _ c i s v c . s t m )。然后打开该目录的 P r o p e r t i e s对话框。在 Directory Security选项卡中单击 Anonymous access and authentication c o n t r o l区域中的E d i t按钮,打开Authentication Methods对话框,如图4 - 7所示。 图4-7 设置验证方法的对话框 在这个对话框中不选中 Anonymous access复选框。如果不使用 Internet Explorer访问该页 面,打开Basic authentication选项以允许非I E浏览器通过提交用户名/口令访问该页面。设置时, 会出现一个有关安全性的警告,单击 Ye s。现在浏览器将被强制出示合适的帐号和身份证明, 第 4章 服务器进程和A S P S e rv e r对象计计107 下载