方案:在 IIS 上生成经典 ASP 网站
作者:Keith Newman 和 Robert McMurray
本文档将指导你完成安装 IIS 和配置经典 ASP 网站的过程。 经典 ASP 是服务器端脚本环境,可用于创建和运行动态 Web 应用程序。 借助 ASP,你可以将 HTML 页面、脚本命令和 COM 组件组合在一起,从而创建易于开发和修改的交互式网页。 经典 ASP 是 ASP.NET 的前身,但今天仍在广泛使用。
经典 ASP 服务器配置将 ASP 和 ISAPI 扩展的 IIS 模块添加到默认的 IIS 安装。
先决条件
若要充分利用本教程,你必须具有对运行以下操作系统之一的计算机的访问权限:
- Windows Server® 2012
- Windows® 8
步骤 1:安装 IIS Web 服务器
可以使用 Windows 用户界面(UI)或命令行执行此过程。
使用 UI 在 Windows Server 2012 上安装 IIS
在“开始”页面上,单击“服务器管理器”磁贴,然后单击“确定”。
在“服务器管理器”中,选择“仪表板”,然后单击“添加角色和功能”。
在“添加角色和功能向导”中的“开始之前”页面上,单击“下一步”。
在“选择安装类型”页上,选择“基于角色或功能的安装”,然后单击“下一步”。
在“选择目标服务器” 页上,选择“从服务器池中选择服务器”,选择你的服务器,然后单击“下一步”。
在“选择服务器角色” 页上,选择“Web 服务器 (IIS)”,然后单击“下一步”。
在“选择功能” 页上,注意默认情况下安装的预先选择的功能,然后选择以下附加角色服务:
- ASP
- ISAPI 扩展
单击 “下一步” 。
在“Web 服务器角色 (IIS)”页面上,单击“下一步”。
在“选择角色服务” 页上,注意默认情况下安装的预先选择的角色服务,然后单击“下一步”。 (注意:只需为静态内容 Web 服务器安装 IIS 8 默认角色服务。)
在“确认安装选择”页上,确认你的选择,然后单击“安装”。
在“安装进度”页上,确认已成功完成 Web 服务器 (IIS) 角色和所需角色服务的安装,然后单击“关闭”。
若要验证是否已成功安装 IIS,请在 Web 浏览器中键入以下内容:
http://localhost
你应该看到默认的 IIS 欢迎页。
使用 UI 在 Windows 8 上安装 IIS
在“开始” 页上,键入“控制面板” ,然后单击搜索结果中的“控制面板” 图标。
在“控制面板” 中,单击“程序” ,然后单击“打开或关闭 Windows 功能” 。
在“Windows 功能” 对话框中,单击“Internet Information Services” ,注意默认情况下安装的预先选择的功能,然后选择以下附加角色服务:
- ASP
- ISAPI 扩展
单击“确定”。
若要验证是否已成功安装 IIS,请在 Web 浏览器中键入以下内容:
http://localhost
你将看到默认的 IIS“欢迎使用”页面。
使用命令行安装 IIS
在命令提示符处或在脚本中键入以下命令:
Start /w pkgmgr /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-ApplicationDevelopment;IIS-ASP;IIS-ISAPIExtensions;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-Security;IIS-RequestFiltering;IIS-HttpCompressionStatic;IIS-WebServerManagementTools;IIS-ManagementConsole;WAS-WindowsActivationService;WAS-ProcessModel;WAS-NetFxEnvironment;WAS-ConfigurationAPI
步骤 2:添加经典 ASP 网站
通过以下方法可执行此过程:使用用户界面 (UI)、在命令行窗口中运行 Appcmd.exe 命令、直接编辑配置文件或编写 WMI 脚本。
使用 UI 添加网站
打开 IIS 管理器。
- 对于 Windows Server 2012,在“开始”页面上,单击“服务器管理器”磁贴,然后单击“确定”。 在“服务器管理器仪表板” 上,单击“工具” 菜单,然后单击“Internet Information Services (IIS) Manager” 。
- 对于 Windows 8,在“开始”页上,键入“控制面板”,然后单击搜索结果中的“控制面板”图标。 在“控制面板” 屏幕上,依次单击“系统和安全” 、“管理工具” 和“Internet Information Services (IIS) Manager” 。
在“连接” 窗格中,右键单击树中的“站点” 节点,然后单击“添加网站” 。
在“添加网站” 对话框中,在“站点名称” 框中为你的网站键入一个友好名称。
如果要选择其他应用程序池,而不是“应用程序池” 框中列出的应用程序池,请单击“选择” 。 在“选择应用程序池” 对话框中,从“应用程序池” 列表中选择一个应用程序池,然后单击“确定” 。
在“物理路径” 框中,键入网站的文件夹的物理路径或单击浏览按钮(“...”)来导航文件系统,从而找到该文件夹。
如果你在步骤 5 中输入的物理路径指向远程共享,请单击“连接身份” ,以指定有权访问该路径的凭据。 如果不使用特定凭据,请选择“连接身份” 对话框中的“应用程序用户(传递身份验证)” 选项。
从“类型” 列表中为网站选择协议。
“IP 地址” 框中的默认值是“全部未分配” 。 如果你必须为网站指定静态 IP 地址,请在“IP 地址” 框中键入 IP 地址。
在“端口” 文本框中键入端口号。
(可选)在“主机头” 框中为网站键入主机头名称。
如果无需对站点进行任何更改,并且你希望该网站立即可用,请选中“立即启动网站” 复选框。
单击“确定”。
使用命令行添加网站
在命令提示符处或脚本中使用以下语法:(注意:若要使用此语法,必须进入以下目录,或者在路径中包含该目录:%windir%\system32\inetsrv
。)
appcmd add site /name:string /id:uint /physicalPath:string /bindings:string
变量 name:string
是名称,而变量 id:uint
是要分配给站点的无符号整数。 变量 name:string
和 id:uint
是在将站点添加到 Appcmd.exe 中时所需的唯一变量。 (注意:当你在未指定 bindings 和 physicalPath 属性的值的情况下添加站点时,该站点将无法启动。)
变量 physicalPath:string
是文件系统中站点内容的路径。
变量 bindings:string
包含用于访问站点的信息,应采用 protocol/IP_address:port:host_header
形式。 例如,网站绑定是协议、IP 地址、端口和主机头的组合。 绑定 http/*:85:
可使网站在端口 85 上侦听针对所有 IP 地址和域名(也称为主机头或主机名)的 HTTP 请求。 另一方面,绑定 http/*:85:marketing.contoso.com
会将网站配置为在端口 85 上侦听针对所有 IP 地址和域名 (marketing.contoso.com) 的 HTTP 请求。
若要添加名为 contoso
、ID 为 2 的网站,且该网站包含 c:\contoso
中的内容并可在端口 85 上侦听针对所有 IP 地址和域名 marketing.contoso.com
的 HTTP 请求,请在命令提示符处键入以下内容,然后按 Enter:
appcmd add site /name: contoso /id:2 /physicalPath: c:\contoso /bindings:http/*:85: marketing.contoso.com
步骤 3:编辑 ASP 应用程序设置
IIS 8 提供了 ASP 应用程序的默认设置,但是你可以根据需要更改这些设置。 例如,你可以在测试服务器上启用客户端调试,以便在测试通过期间帮助排除问题。
使用 UI 编辑 ASP 应用程序设置
- 打开 IIS 管理器并导航到你想要管理的级别。
- 在“功能视图” 中,双击“ASP” 。
- 在“ASP” 页上,根据需要编辑设置。
- 完成操作后,单击“操作” 窗格中的“应用” 。
使用命令行编辑 ASP 应用程序设置
指定默认字符集
若要指定应用程序的默认字符集,请使用以下语法:
appcmd set config /section:asp /codePage:integerRange
变量 integerRange
是默认字符集。 例如,若要将代码页设置为在美国英语和许多欧洲字母表中使用的拉丁字符集,请在命令提示符处键入以下内容,然后按 Enter:
appcmd set config /section:asp /codePage:1252
启用或禁用缓冲
若要启用或禁用 ASP 应用程序输出的缓冲,请使用以下语法:
appcmd set config /section:asp /bufferingOn:true|false
值 true
表示启用缓冲,而 false
表示禁用缓冲。 默认值为 true
。
启用或禁用 HTTP 1.1 分块传输编码
若要为 World Wide Web 发布服务启用 HTTP 1.1 分块传输编码,请使用以下语法:
appcmd set config /section:asp /enableChunkedEncoding:true|false
值 true
表示启用 HTTP 1.1 分块传输编码,而 false
表示禁用 HTTP 1.1 分块传输编码。 默认值为 true
。
启用或禁用 HTML 回退
若要启用或禁用 HTML 回退,请使用以下语法:
appcmd set config /section:asp /enableASPHTMLFallback:true|false
设置为值 true
时,如果因请求队列已满而拒绝该请求,则会发送与所请求的 .asp 文件同名的 .htm 文件(如果存在),而不是发送相应的 .asp 文件。 默认值为 true
。
启用或禁用父路径
若要启用或禁用相对于当前目录或高于当前目录的路径,请使用以下语法:
appcmd set config /section:asp /enableParentPaths:true|false
值 true
用于将 ASP 页面设置为允许路径相对于当前目录或高于当前目录。 默认值为 true
。
设置客户端连接测试时间间隔
若要设置一个时间间隔,以便在经过此时间间隔后 ASP 将先检查客户端是否仍然处于连接状态,再执行请求,请使用以下语法:
appcmd set config /section:asp /queueConnectionTestTime:timeSpan
变量 timeSpan
用于设置时间间隔 (hh:mm:ss),ASP 将在此时间间隔后检查客户端在执行请求之前是否仍然处于连接状态。 默认值为 00:00:03
。
设置最大请求实体主体限制
若要指定 ASP 请求的实体主体中所允许的最大字节数,请使用以下语法:
appcmd set config /section:asp /maxRequestEntityAllowed:int
变量 int
表示 ASP 请求的主体中所允许的最大字节数。 默认值为 200000
字节。
设置请求队列长度
若要指定允许放入队列中的并发 ASP 请求的最大数量,请使用以下语法:
appcmd set config /section:asp /requestQueueMax:int
变量 int
表示允许放入请求队列中的并发 ASP 请求的最大数量。 默认值为 3000
。
设置请求队列超时
若要指定 ASP 请求在请求队列中可以等待的时长,请使用以下语法:
appcmd set config /section:asp /queueTimeout:timeSpan
变量 timeSpan
表示 ASP 请求在请求队列中可以等待的最长时间 (hh:mm:ss)。 默认值为 00:00:00
。
指定响应缓冲限制
若要控制 ASP 页面在进行刷新之前可写入到响应缓冲区的最大字节数,请使用以下语法:
appcmd set config /section:asp /bufferingLimit:int
变量 int
表示 ASP 缓冲区的最大大小(以字节为单位)。 默认值为 4194304
字节。
设置脚本超时
若要指定 ASP 页面允许脚本在终止脚本和将事件写入 Windows 事件日志之前运行的默认时长,请使用以下语法:
appcmd set config /section:asp /scriptTimeout:timeSpan
变量 timeSpan
表示 ASP 请求可在将事件写入 Windows 事件日志之前运行的最大时间 (hh:mm:ss)。 默认值为 00:01:30
。
指定每个处理器的线程数限制
若要指定 ASP 可以为每个处理器创建的最大工作线程数,请使用以下语法:
appcmd set config /section:asp /processorThreadMax:int
变量 int
表示 ASP 可以为每个处理器创建的最大工作线程数。 默认值为 25
。
指定默认区域设置标识符
若要定义 ASP 应用程序的日期、时间和货币的格式设置,请使用以下语法:
appcmd set config /section:asp /lcid:int
变量 int
表示 ASP 应用程序的默认区域设置标识符。 默认值为 0
。
启用或禁用应用程序自动重新启动
若要启用或禁用在更改配置设置后自动重新启动 ASP 应用程序这一行为,请使用以下语法:
appcmd set config /section:asp /enableApplicationRestart:true|false
值 true
表示允许在更改了配置设置之后自动重新启动 ASP 应用程序。 默认值为 true
。
启用或禁用行号计算
若要允许或禁止 ASP 计算并存储所执行的每行代码的行号以便在错误报告中提供此行号,请使用以下语法:
appcmd set config /section:asp /calLineNumber:true|false
值 true
表示启用行号计算和存储。 默认值为 true
。
启用或禁用 COM 组件异常捕获
若要允许或禁止 ASP 页面捕获由 COM 组件引发的异常,请使用以下语法:
appcmd set config /section:asp /exceptionCatchEnable:true|false
值 true
表示启用 COM 组件异常捕获。 如果设置为 false
,则 Microsoft 脚本调试器工具不会捕获由正在调试的组件所发出的异常。 默认值为 true
。
启用或禁用客户端调试
若要启用或禁用客户端调试,请使用以下语法:
appcmd set config /section:asp /appAllowClientDebug:true|false
值 true
表示启用客户端调试。 默认值为 false
。
启用或禁用日志错误请求
若要允许或禁止将 ASP 错误写入 Windows 事件日志的应用程序部分,请使用以下语法:
appcmd set config /section:asp /logErrorRequests:true|false
值 true
表示启用日志错误请求。 默认情况下,将 ASP 错误写入客户端浏览器和 IIS 日志。 默认值为 true
。
启用或禁用将 ASP 错误记录到 Windows 事件日志中的功能
若要允许或禁止在服务器上进行 ASP 调试,请使用以下语法:
appcmd set config /section:asp /appAllowDebugging:true|false
值 true
表示为 ASP 应用程序启用服务器端调试。 默认值为 false
。
匿名运行 On End 函数
若要允许或禁止 SessionOnEnd
和 ApplicationOnEnd
全局 ASP 函数以匿名用户身份运行,请使用以下语法:
appcmd set config /section:asp /runOnEndAnonymously:true|false
值 true
表示允许 SessionOnEnd
和 ApplicationOnEnd
全局 ASP 函数以匿名用户身份运行。 默认值为 true
。
指定脚本错误消息
若要指定在特定调试错误未发送到客户端时要向浏览器发送的错误消息,请使用以下语法:
appcmd set config /section:asp /scriptErrorMessage:string
变量 string
表示在特定调试错误未发送到客户端时要向浏览器发送的错误消息。 默认值为“处理 URL 时服务器出错。 请与系统管理员联系”。
启用或禁用向浏览器发送错误的功能
若要允许或禁止除了将调试详细信息(文件名、错误、行号和描述)记录到 Windows 事件日志中以外还将其写入客户端浏览器,请使用以下语法:
appcmd set config /section:asp /scriptErrorSentToBrowser:true|false
值 true
表示允许将调试详细信息写入客户端浏览器。 默认值为 false
。
指定默认脚本语言
若要指定 Web 服务器上运行的所有 ASP 应用程序的默认脚本语言,请使用以下语法:
appcmd set config /section:asp /scriptLanguage:string
变量 string
表示默认脚本语言。 默认值为 VBScript
。
指定缓存目录路径
若要指定 ASP 用来在内存中的缓存发生溢出后存储已编译的 ASP 模板的目录名称,请使用以下语法:
appcmd set config /section:asp /diskTemplateCacheDirectory:string
变量 string
表示缓存目录路径。 默认值为 %windir%\system32\inetsrv\ASP Compiled Templates
。
启用或禁用类型库缓存
若要启用或禁用对类型库的缓存,请使用以下语法:
appcmd set config /section:asp /enableTypelibCache:true|false
值 true
表示启用对类型库的缓存。 默认值为 true
。
设置要存储的已编译 ASP 模板的最大数量
若要设置可以存储的已编译 ASP 模板的最大数量,请使用以下语法:
appcmd set config /section:asp /maxDiskTemplateCacheFiles:int
变量 int
表示要存储的已编译 ASP 模板的最大数量。 默认值为 2000
。
设置要存储的已编译 ASP 模板的最大数量
若要设置要缓存的预编译脚本文件的最大数量,请使用以下语法:
appcmd set config /section:asp /scriptFileCacheSize:int
变量 int
表示要缓存的预编译脚本文件的数量。 如果设置为 0,则不缓存任何脚本文件。 如果设置为 4294967295
,则缓存请求的所有脚本文件。 默认值为 500
。
设置要缓存的脚本引擎的最大数量
若要设置 ASP 页面将缓存在内存中的脚本引擎的最大数量,请使用以下语法:
appcmd set config /section:asp /scriptEngineCacheMax:int
变量 int
表示要缓存的脚本引擎的最大数量。 默认值为 250
。
启用或禁用 COM+ 并行程序集
若要启用或禁用 COM+ 并行程序集,允许 ASP 应用程序指定要使用的系统 DLL 版本或经典 COM 组件,请使用以下语法:
appcmd set config /section:asp /appServiceFlags:true|false
值 true
表示启用 COM+ 并行程序集。 默认值为 false
。
启用或禁用 COM+ 跟踪程序
若要启用或禁用 COM+ 跟踪程序,请使用以下语法:
appcmd set config /section:asp /enableTypelibCache:true|false
值 true
表示启用 COM+ 跟踪程序,允许管理员或开发人员调试 ASP 应用程序。 默认值为 false
。
启用或禁用多线程环境
若要允许或禁止 ASP 在多线程环境中运行,请使用以下语法:
appcmd set config /section:asp /executeInMta:true|false
值 true
表示允许 ASP 在多线程环境中运行。 默认值为 false
。
启用或禁用线程模型检查
若要允许或禁止 IIS 检查你的应用程序创建的任何组件的线程模型,请使用以下语法:
appcmd set config /section:asp /trackThreadingModel:true|false
值 true
表示启用线程模型检查。 默认值为 false
。
指定 COM+ 分区 ID
若要指定 COM+ 分区的全局唯一标识符 (GUID),请使用以下语法:
appcmd set config /section:asp /partitionID:string
变量 string
表示 COM+ 分区的 GUID。 默认值为 00000000-0000-0000-0000-000000000000
。
注意
还必须将 appServiceFlags
标志设置为 true
。
指定 COM+ 应用程序
若要指定 COM+ 应用程序的名称,请使用以下语法:
appcmd set config /section:asp /sxsName:string
变量 string
表示 COM+ 应用程序的名称。
注意
还必须将 appServiceFlags
标志设置为 true
。
启用或禁用 COM+ 分区
若要启用或禁用 COM+ 分区,请使用以下语法:
appcmd set config /section:asp /appServiceFlags:true|false
值 true
表示启用 COM+ 分区,该分区可用于将应用程序隔离到它们自己的 COM+ 分区中。 默认值是 false。
注意
如果设置为 true
,则还必须为 partitionID
属性设置值。
启用或禁用会话状态
若要启用或禁用 ASP 应用程序的会话状态持续性,请使用以下语法:
appcmd set config /section:asp /allowSessionState:true|false
值 true
表示启用会话状态持久性。 默认值为 true
。
设置并发会话的最大数量
若要设置 ASP 所允许的并发会话的最大数量,请使用以下语法:
appcmd set config /section:asp /max:int
变量 int
表示并发会话的最大数量。 默认值为 -1
。
启用或禁用安全会话 ID
若要允许或禁止在通过安全会话通道分配会话 ID 时将其作为安全 Cookie 发送,请使用以下语法:
appcmd set config /section:asp /keepSessionIdSecure:true|false
值 true
表示启用安全会话 ID。 默认值为 true
。
设置会话超时
若要指定在上次发出与某个会话对象关联的请求后将保留该对象的默认时长,请使用以下语法:
appcmd set config /section:asp /timeout:timeSpan
变量 timeSpan
表示在上次发出与某个会话对象关联的请求后将保留该对象的最长时间 (hh:mm:ss)。 默认值为 00:20:00
。
后续步骤
全面测试你的网站,以确保它按预期方式运行。 然后考虑配置以下功能:
- 若要帮助你对 Web 服务器的性能进行故障排除或优化,请设置 IIS 日志记录。 有关说明,请参阅 Configure Logging in IIS。
- 若要提高 Web 服务器的安全性,请配置请求筛选。 有关说明,请参阅 Configure Request Filtering in IIS。