IIS6.0下ASP的新增功能
发布时间:2007-08-22 14:55:00
内容摘要:除了内部性能增强和优化外,IIS6.0版本的 Active Server Pages(ASP) 还具有如下新功能: 更好的国际化和UTF-8支持,改进的POST支持,ASP挂起检测,常用文件的缓存,UNC 增强,ASP中的COM+服务,单元模型选择,并排集合,COM+ 分区,跟踪程序事务,ASP 的新配置数据库属性。 更好的国际化和 UTF-8 支持
UTF-8 支持已经被扩展到所有 ASP 内置对象的属性和方法中。上一版本的 ASP 仅在响应和写入方面支持 UTF-8。
改进的 POST 支持
ASP 目前可以从客户端读取 Chunked 编码的 POST 数据。
ASP 挂起检测
当 IIS 网站繁忙时,可能会出现这样的情况:迅速生成最大数量的 ASP 线程,其中的一些 ASP 线程被挂起,从而导致性能下降。 HSE_REQ_REPORT_UNHEALTHY 以及万维网发布服务(WWW 服务)将回收主控 ASP.dll 的工作进程,并将项目添加到事件日志中。
注意 如果线程不响应超时,则将其视为“挂起”。
常用文件的缓存
目前,ASP 除了保留内存缓存之外,还在磁盘上缓存一些最常用的文件。磁盘缓存的默认位置是 %systemroot%\System32\inetsrv\ASP Compiled Templates。可以通过设置 AspDiskTemplateCacheDirectory 配置数据库属性来更改硬盘缓存的位置。
UNC 增强
目前,ASP 能够处理 ASP 脚本中的 UNC 路径。
ASP 中的 COM+ 服务
如果想要在以前版本的 IIS 中使用 ASP 应用程序提供的 COM+ 服务,您必须创建可以调用那些服务的方法的 COM 组件。目前,您可以配置 ASP 应用程序以使用下面的 COM+ 服务而不必创建 COM 组件:
单元模型选择:
ASP 现在能够在多线程单元 (MTA) 中运行其全部线程。如果 COM 组件主要是自由线程或双线程组件,则将 ASP 线程作为 MTA 运行可显著改善性能。
要使 ASP 应用程序能够在 MTA 中运行,您可以在应用程序级别使用配置数据库设置 AspExecuteInMTA。这意味着您可以让一个应用程序运行于 ASP MTA 线程上,而让第二个应用程序运行于 ASP STA(单线程单元)线程上。ASP 线程的默认设置仍为 STA。
要点 当您将 ASP 应用程序的运行环境从 STA 切换到 MTA(或从 MTA 切换到 STA)时,则模拟令牌将过时。这可能导致应用程序在无模拟的情况下运行,让其用可能允许访问其他资源的进程的标识有效地运行。如果您必须切换线程模型,请在进行更改之前禁用该应用程序并将其卸载。
下列示例设置默认网站应用程序 (W3SVC/1/ROOT) 在 MTA 中执行:
On Error Resume Next
set providerObj = GetObject("winmgmts://MyMachine/root/MicrosoftIISv2")
’ 获得对名为“默认网站”的 ASP 应用程序的引用
set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting=’W3SVC/1/ROOT’")
WScript.Echo "Before: AspExecuteInMTA = " & IIsWebVirtualDirSettingObj.AspExecuteInMTA
’ 将 ASP 应用程序设置为在 MTA 中执行
IIsWebVirtualDirSettingObj.AspExecuteInMTA = 1
IIsWebVirtualDirSettingObj.Put_()
WScript.Echo "After: AspExecuteInMTA = " & IIsWebVirtualDirSettingObj.AspExecuteInMTA
并排集合:
并排 (SxS) 集合允许 ASP 应用程序指定要使用哪个版本的系统 DLL 或传统 COM 组件,例如 MDAC、MFS、MSVCRT、MSXML 等。例如,如果您的 ASP 应用程序依赖 MSXML 2.0 版,则可以确保即使是在服务器上应用了 Service Pack 之后,您的应用程序仍使用 MSXML 2.0 版。任何新版本的 MSXML 仍安装在计算机上,但是保留 2.0 版且由应用程序使用。配置 SxS 程序集要求您知道 DLL 的路径,且 COM+ 清单文件存在于每个需要使用 DLL 的虚拟目录中。COM+ 清单是包含有关 DLL 安装位置信息的 XML 文件。IIS 不验证清单是否存在。清单的外观类似于下面的文件摘录:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity publicKeyToken="75e377300ab7b886" type="win32" name="Test4Dir" version="1.0.0.0" processorArchitecture="x86"/>
<file name="DirComp.dll" hash="35ca6f27b11ed948ac6e50b75566355f0991d5d9" hashalg="SHA1">
<comClass clsid="{6C6CC20E-0F85-49C0-A14D-D09102BD7CDC}" progid="DirComp.PathInfo" threadingModel="apartment"/>
<typelib tlbid="{AA56D6B8-9ADB-415D-9E10-16DD68447319}" version="1.0" helpdir=""/>
</file>
</assembly>
您可以在 IIS 端以编程方式或者通过使用 IIS 管理器来启用并排集合。
在 IIS 端使用 IIS 管理器启用并排集合
在 IIS 管理器中,右键单击网站或虚拟目录,然后单击“属性”。
单击“虚拟目录”选项卡,然后单击“配置”。
如果配置按钮不可用,那么原因是还没有为该虚拟目录创建应用程序。单击“创建”以创建一个应用程序。
在“应用程序配置”对话框中,单击“选项”选项卡。
选中“启用并排集合”复选框。
在“清单文件名”框中,键入 COM+ 清单文件的名称。
单击“确定”两次。
要通过编程启用并排集合,请设置 AspAppServiceFlags 配置数据库属性的 AspEnableSxs 标志。同时将 AspSxsName 配置数据库属性设置为 COM+ 清单的名称。在应用程序级别设置这两个配置数据库属性。
要点 即使该功能可在应用程序级别进行配置,在任何一个应用程序池中都只能使用一个版本的系统 DLL。例如,如果应用程序 App1 使用 MDAC 2.5 版,应用程序 App2 使用 MDAC 2.4 版,则 App1 和 App2 不应位于同一个应用程序池中。如果它们位于同一个应用程序池中,则首先加载的应用程序加载与之相对应的 MDAC 版本,在卸载这些应用程序之前,其他应用程序只能被迫使用该版本。
下列示例在默认网站应用程序 (W3SVC/1/ROOT) 上启用并排集合。请注意,只要设置了 AspEnableTracker 属性,AspAppServiceFlags 属性就发生改变:
On Error Resume Next
set providerObj = GetObject("winmgmts://MyMachine/root/MicrosoftIISv2")
’ 获得对名为“默认网站”的 ASP 应用程序的引用
set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting=’W3SVC/1/ROOT’")
WScript.Echo "Before: AspEnableSxs = " & IIsWebVirtualDirSettingObj.AspEnableSxs
WScript.Echo " AspSxsName = " & IIsWebVirtualDirSettingObj.AspSxsName
WScript.Echo " AspAppServiceFlags = " & IIsWebVirtualDirSettingObj.AspAppServiceFlags
’ 设置 ASP 应用程序以启用 COM+ 并排集合
IIsWebVirtualDirSettingObj.AspEnableSxs = 1
’ 设置 AspSxsName 属性
IIsWebVirtualDirSettingObj.AspSxsName = "VersionInfo"
’ 将值保存到 IIS 配置数据库中
IIsWebVirtualDirSettingObj.Put_()
’ 再次获得引用以刷新 AspAppServiceFlags 属性。
set IIsWebVirtualDirSettingObj = Nothing
set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting=’W3SVC/1/ROOT’")
WScript.Echo "After: AspEnableSxs = " & IIsWebVirtualDirSettingObj.AspEnableSxs
WScript.Echo " AspSxsName = " & IIsWebVirtualDirSettingObj.AspSxsName
WScript.Echo " AspAppServiceFlags = " & IIsWebVirtualDirSettingObj.AspAppServiceFlags
猜你喜欢
- 自从2005年8月11日阿里巴巴宣布收购雅虎中国的全部资产后,做为阿里巴巴集团的创始人马云心里盘算的事应该是如何把雅虎中虎整合进阿里巴巴这个
- 你喜欢在博客文章中使用图片吗?是的,如果不是很麻烦的话,相信大家都不会介意放上几张漂亮的图片来点缀一下内容的,不过你的图片可能会导致下面的两
- EXISTS该函数返回集合中第一个元素的索引,如果集合为空,返回NULLNULLNULLCollection.EXISTS(index)CO
- 在SQL Server数据库中,有min server memory与max server memory两个内存选项。数据库管理员合理设置这
- 聚集索引,数据实际上是按顺序存储的,数据页就在索引页上。就好像参考手册将所有主题按顺序编排一样。一旦找到了所要搜索的数据,就完成了这次搜索,
- 本文介绍了asp中 adpbe.stream 的语法,各种参数使用说明,方便大家查阅。更多请看:VBScript 速查手册(语言参考) ch
- 先看看单条 SQL 语句的分页 SQL 吧。 方法1: 适用于 SQL Server 2000/2005 代码如下:SELECT TOP 页
- 在浏览器 IE6 、IE7、Firefox2+、Firefpx3+、Opera9.6+、Safari3.1+中测试以下代码:<!DOC
- 今天在日常维护一个网站时,发现该网站的留言程序没有经过严格的验证过滤,导致了将近十万条垃圾数据。而其中又不乏重要信息,需要清理数据,以及增加
- 和朋友讨论时,我提到过一个观点,所有框架层设计中,最核心的是导航设计。最近更看到有国外同行提出“80%的可用性是导航!”因为良好的导航可以保
- 兼容主流浏览器,独立样式表,可以很方便的进行视觉效果自定义截图:模拟下拉菜单演示代码:<!DOCTYPE html PUBLIC &q
- 今天在玩 google earth 4.0b,发现 Print Screen 下来的图片很大,如果直接放在网页上,因为尺寸太大又不合适,又不
- 看到别人用td和table标签模拟的办法: 设置table的上、左padding
- 下面是模板的一般形式,显示了指定 SQL 查询和 XPath 查询的方式: <ROOT xmlns:sql="ur
- 一直以来都有这样一个困惑,那就是打开页面间的链接时是在原窗口转换还在新窗口打开呢?如果是在原窗口里转换页面的话,那我还想使用原页面的信息呢?
- ORACLE的数据字典是数据库的重要组成部分之一,它随着数据库的产生而产生, 随着数据库的变化而变化, 体现为sys用户下的一些表和视图。数
- 最近写了两个管理后台的前端页面,其中有一个管理后台,左侧菜单导航和右侧内容页是两个iframe,需求是,点击上面的主导航时,左侧iframe
- 在SQL Server Management Studio 用WINDOWS连接的情况下改实列的“属性&rdqu
- 用mysqldump和source可以使用这种方式导出数据:mysqldump -urott -P5678 --default-charac
- 在工作中,作为一名开发者的你,也许偶尔需要从事维护数据库的工作。下面我们来介绍一下两个SQL服务器的维护技巧:轻松改变数据库拥有者、整理索引