8. IIS应用程式

本章重点
 

介绍设定应用程式(Application)、设定快取记忆体以调整效能、启用ASP侦错功能、执行CGI应用程式、安装ISAPI筛选器等内容。

应用程式(Application)
 

何谓IIS应用程式(Application)呢 ?


说明

应用程式是一个虚拟目录,每个用户端的使用者都会先执行起始目录(又称为应用程式之根目录)下的Global.asa档案;虚拟目录并不一定是一个应用程式,虚拟目录不设定为应用程式时,就不会执行应用程式根目录下的Global.asa档案。


若是一个虚拟目录但不是一个应用程式的符号,为活页夹加上右下角的小球,如下Scripts;若是一个应用程式的符号,则为小球包於包装盒子中,如下IISHelp:


 

应用程式起始点
 

您可用 Internet服务管理员 来设定应用程式在Web站台的起始目录,应用程式的起始点是由一个小球包於包装盒子中的图示来表示,如下IISHelp,在common、iis目录中的档案均视为IISHelp应用程式的一部分:


 

此应用程式所涵盖的界限,为起始目录下的每一个目录档案,都会被当做为此应用程式的一部分,直到另外有其他应用程式起始目录出现为止。

每个Web站台可有多个应用程式。

IIS支援ASP、ISAPI、CGI、IDC、及SSI等应用程式。本章介绍主题如下:

8-1 如何设定IIS应用程式呢 ?
 

要建立IIS应用程式,只要指定一个目录作为一个应用程式的起始点(应用程式的根目录)。

每一个应用程式可以命名一个易记的名称,此名称只会出现在 Internet服务管理员 中。

您可将一个虚拟目录改变为是一个应用程式。请在上图的Scripts按右键并选择 内容 ,於 虚拟目录 标签页的 应用程式设定 按下 建立 按钮,即可设定为是一个应用程式,如下:


 

请在 应用程式名称 文字方块中,命名应用程式名称。按下 确定 按钮,即可发现Scripts改变为小球包於包装盒子中的符号,如下:


 

移除应用程式
 

您可以移除一个虚拟目录的应用程式界限。

同理,设定为应用程式後,如在应用程式的起始目录上按右键并选择 内容 ,於 虚拟目录 标签页的 应用程式设定 按下 移除 按钮,即可设定为不是一个应用程式,如下:


 

应用程式保护设定
 

一个应用程式若动作不正常,可能会导致整个IIS当机,且常常必须重新开机,因而影响到其他应用程式的动作。

IIS 4.0可将应用程式设定在不同的处理程序(DLLHost.exe)中执行,不会影响到其他应用程式的动作。IIS 5.0提供第叁种选择:数个应用程式可以放在一个共用的集区的处理程序中执行。如下 应用程式保护设定 部份:


 

 应用程式保护 选项可决定要将此应用程式放在:

  •  低(IIS处理程序): 与Web服务同一个处理程序inetinfo.exe中执行。
     
  •  中(集区的): 与其他应用程式一起共用的集区处理程序中执行。
     
  •  高(独立的): 放在一个与其他程序完全隔绝的处理程序中执行。
     

将应用程式独立,指的是让应用程式在单独的程序与记忆体空间中执行,与Web伺服器以及其他应用程式完全隔离。这个应用程式若动作不正常,不会影响到其他应用程式的动作。

伺服器端的包含档(SSI)与IDC(Internet资料库连接器)应用程式,无法在Web伺服器之外的记忆体空间中执行。

IIS预设为Web服务会在自己的处理程序inetinfo.exe中执行,而其他的应用程式则在一个共用的单独处理程序集区DLLHost.exe中执行。

考虑到效能缘故,设定为 高(独立的) 方式之应用程式不要超过10个以上。


说明

建议inetinfo.exe在自己的处理程序中执行,很重要的应用程式也在其本身的 高(独立的) 处理程序中执行,其馀的应用程式则放在一个共用的 中(集区的) 处理程序中执行。


应用程式权限设定
 

您可以设定应用程式的权限, 使用权限 设定部份如下:


 

 使用权限 设定选项决定此应用程式的程式执行等级:

  •  无: 只允许使用者存取静态如HTML或图形档的档案,可防止任何程式或指令执行。
     
  •  指令: 只允许执行如ASP、IDC(Internet Database Connector)等指令。 指令 权限比 执行 权限安全,因为可以限制能够在目录中执行的执行档。
     
  •  指令及执行档: 任何应用程式(包括.dll和.exe档)都可以在这个目录之下执行。
     

设定应用程式对应
 

您可以设定不同的应用程式副档名,使用不同的程式(ISAPI或CGI程式)或指令语言来执行。譬如,档案副档名为.asp时,IIS会呼叫ASP程式(Asp.dll)来处理。

应用程式档案的副档名与处理此应用程式的ISAPI或CGI程式之对照表,称为 应用程式对应 ,您可以新增或移除此对照表。

 应用程式对应 对照表设定步骤如下:

  1.  Internet服务管理员 中,选取Web站台或应用程式的起始目录,按右键并选择 内容 ,选择 主目录  虚拟目录  目录 标签页,按下 设定 按钮,如下:
     

  2. 然後按下 应用程式对应 标签页,如下:
     

  3. 按一下 新增 按钮,於 执行档 中,输入所设定副档名档案的处理程式(ISAPI或CGI)於本机目录上之路径,在 副档名 中,输入对应的副档名,如下:
     

  4. 勾选 指令引擎 核取方块的话,表示要在有 指令 权限的目录下处理这个档案。

8-2 如何设定快取记忆体以调整效能呢?
 

把执行过的指令档、应用程式暂存於快取记忆体,便可以增调整伺服器的效能。可设定如下:

  •  快取处理ISAPI应用程式: 将ISAPI(Internet伺服器API)的DLL应用程式(包括Active Server Pages)载入并暂存於快取记忆体中。每一个Web站台、或应用程式都可以设定。
     
  •  指令档快取记忆体: 将ASP指令档案暂存於快取记忆体中。每一个「独立」Web站台、或「独立」应用程式上执行之应用程式的快取记忆体档案数量都可以设定。
     

此处所谓「独立」系指将 主目录  虚拟目录 标签页之 应用程式保护 选项设定为 高(独立的) 时,如下:


 

於整个IIS电脑、或「独立」Web站台、或「独立」应用程式之 主目录  虚拟目录 标签页按下 设定 按钮时,即会多出现一个 处理程序选项 标签页,如下:


 

快取处理ISAPI应用程式设定
 

系统可将ISAPI(Internet伺服器API)的DLL应用程式(包括Active Server Pages)载入并暂存於快取记忆体中,以後要处理用户端的要求时,就不必再重新载入这个DLL应用程式,可减少使用者在载入DLL的时间。

只有在要对ISAPI进行侦错等特殊状况时,才不会使用快取处理。若要不使用快取处理,必须把所有使用到这个应用程式的Web站台,全部不勾选 快取处理ISAPI应用程式 核取方块才行。

不勾选 快取处理ISAPI应用程式 核取方块後,并不会把正在执行中的应用程式从记忆体中清除,而是只有以後执行者,才不会储存於快取记忆体内。

如何设定 快取处理ISAPI应用程式 呢?步骤如下:

  1.  Internet服务管理员 中,选取Web站台、或应用程式的起始目录,按右键选择 内容 ,於 主目录  虚拟目录  目录 标签页按下 设定 按钮,如下:
     

  2. 选择 应用程式对应 标签页,勾选 快取处理ISAPI应用程式 核取方块即可暂存於快取记忆体中,如下
     

ASP指令档快取记忆体设定
 

ASP指令档案执行过後,会在暂存於快取(Cache)记忆体中以提高执行效能。增加快取记忆体的保存档案数量,可提高Active Server Pages之效能。

您可以设定所有在「独立」Web站台、或「独立」应用程式上执行之应用程式的快取记忆体档案数量,此处所谓「独立」系指将 应用程式保护 选项设定为 高(独立的) 时。

 指令档快取记忆体 选项可以设定为:

  •  不要快取处理ASP档案: 不将任何.asp档案保存在快取记忆体内。
     
  •  快取处理所有要求的ASP档案: 将所有.asp档案都保存在快取记忆体内。
     
  •  要快取处理的ASP档案的最多数目: 指定最多可以保存在快取记忆体内的指令档案个数。
     

如何设定 指令档快取记忆体 呢?步骤如下:

 Internet服务管理员 中,选取整个IIS电脑、「独立」Web站台、或「独立」应用程式的起始目录。於 内容  主目录  虚拟目录 标签页,按下 设定 按钮时,即可由 处理程序选项 标签页设定 指令档快取记忆体 ,如下:


 

若要设定快取指令档的数量,请选取 要快取处理的ASP档案的最多数目 选项,并输入数值。

8-3 如何启用ASP侦错功能呢?
 

运用Microsoft Script Debugger或Visual InterDev等侦错程式,可以检视ASP指令档中的执行错误,当执行中发生错误,或执行中遇到中断点时,就会启动此侦错程式。

若要使用侦错的功能,必须首先启用伺服器的侦错功能。如何启用伺服器的侦错功能呢 ? 步骤如下:

  1.  Internet服务管理员 中,选取Web站台、或应用程式的起始目录,按右键选择 内容 ,然後按 主目录  虚拟目录  目录 标签页,按下 设定 按钮,如下:
     

  2. 选择 应用程式侦错 标签页,若要启用伺服器端(於伺服器执行之ASP程式码)的侦错功能,则选取 启用ASP伺服器端指令侦错 ;若要启用用户端(於浏览器执行之Script程式码)的侦错功能,则选取 启用ASP用户端指令侦错 ,如下:
     

当执行中发生错误,或执行中遇到中断点时,就会启动侦错程式,如下:


 

8-4 如何执行CGI应用程式呢?
 

IIS(Internet Information Services)可以执行CGI应用程式。

若将CGI应用程式编译成可执行档(.exe),为了让使用者可以执行.exe程式,则应用程式目录必须提供 指令及执行档 的使用权限;若CGI程式使用如Perl等指令撰写,则应用程式目录可提供 指令及执行档 、或 指令 的使用权限,如下:


 

若要使用 指令 的使用权限来处理CGI程式,则指令解译器必须标示为 指令引擎 ,如下:


 

勾选 指令引擎 核取方块的话,表示要在有 指令 权限的目录下处理这个档案。只有标记为指令引擎的解译器才可在设定为 指令 权限的目录下执行。设定为 指令 权限的目录下无法执行可执行档(.dll和.exe档案)。


说明

基於安全考量,最好将可执行档(.dll和.exe档案)储存於没有 读取 权限的另一个目录中,因为访客可下载并执行有 读取 权限的目录中的可执行档。


如果要执行Perl等指令档CGI程式,就须取得Perl解译器。Windows并未提供Perl、SED、或AWK解译器。

由於CGI应用程式执行速度很慢,建议改用执行速度最快的ISAPI开发,或最容易开发的ASP应用程式。

CGI程式所在的目录,若考虑安全性,建议将CGI程式与其他档案分开放置於不同的目录路径下。

使用NTFS时,须确定所有执行此CGI程式的使用者都具有该目录的 执行 权限。若匿名使用者可以登入Web站台,须确定匿名使用者(使用者帐户为 IUSR_电脑名称 )具有 执行 权限,如下:


 

设定CGI指令逾时时间
 

您可以设定 CGI指令的逾时时间 值,也就是系统分配给CGI程式的最多执行时间,CGI程式一定要在这个指定的时间内执行完毕并将结果值传回。

您可以变更整个IIS电脑(Web伺服器)、「独立」Web站台、或「独立」应用程式的 CGI指令的逾时时间 值设定。

如何设定整个IIS电脑之 CGI指令的逾时时间 呢?步骤如下:

  1.  Internet服务管理员 中,选取电脑(Web伺服器)图示,按滑鼠右键选择 内容 ,如下:
     

  2.  主要内容 中选取 WWW服务 ,再按下 编辑 按钮,如下:
     

  3. 选择 主目录 标签页,按下 设定 按钮,如下:
     

  4. 选择 处理程序选项 标签页,即可於 CGI指令逾时时间 中输入CGI逾时时间,如下:
     

设定「独立」Web站台、或「独立」应用程式之 CGI指令的逾时时间 时,步骤为於 内容  主目录  虚拟目录 标签页,按下 设定 按钮,即可由 处理程序选项 标签页设定之。

8-5 如何安装ISAPI筛选器呢?
 

ISAPI筛选器是一个DLL程式,当Web伺服器收到HTTP要求时,触发某个事件,即会执行ISAPI筛选器。

ISAPI筛选器和应用程式(Application)不同之处,为应用程式系由用户端的HTTP要求所驱动,而ISAPI筛选器系由Web伺服器的事件所驱动。

您可将ISAPI筛选器和Web伺服器上的事件相结合,当有Web事件(如 读取 )发生时,系统将执行其关联的ISAPI筛选器(如将资料加密)。

整个IIS电脑(Web伺服器,即所有的站台)可以安装通用的ISAPI筛选器,个别的Web站台安装也可安装各别的ISAPI筛选器。

若同一事件会触发数个ISAPI筛选器,则会先执行有较高优先权的筛选器,相同优先权的筛选器会依序呼叫。优先权相同时,会优先执行Web伺服器的通用筛选器者,然後再执行Web站台的筛选器。

如何安装ISAPI筛选器呢?步骤如下:

  1.  Internet服务管理员 中,选取Web伺服器或Web站台,选取电脑图示(Web伺服器)或Web站台,按滑鼠右键选择 内容 ,按下 ISAPI筛选器 标签页,如下:
     

  2. 若要新增时请按下 新增 按钮,於 筛选器名称 中输入筛选器的名称,并於 执行档 中选取筛选器dll档案,如下:
     

  3. 按下 确定 即可新增。用方向键可以设定具相同优先权之筛选器的载入顺序。

新增或变更了筛选器时,必须重新启动Web伺服器,以便重新载入新的筛选器到记忆体中。