當(dāng)前位置:首頁(yè)>>開(kāi)發(fā)編程>>ASP>>新聞內(nèi)容
IIS6.0下ASP的新增功能
作者: 發(fā)布時(shí)間:2003-10-7 14:43:23 文章來(lái)源:
ASP 的新增功能
除了內(nèi)部性能增強(qiáng)和優(yōu)化外,該版本的 Active Server Pages(ASP) 還具有如下新功能:


更好的國(guó)際化和 UTF-8 支持
改進(jìn)的 POST 支持
ASP 掛起檢測(cè)
常用文件的緩存
UNC 增強(qiáng)
ASP 中的 COM+ 服務(wù)
單元模型選擇
并排集合
COM+ 分區(qū)
跟蹤程序
事務(wù)
ASP 的新配置數(shù)據(jù)庫(kù)屬性
更好的國(guó)際化和 UTF-8 支持
UTF-8 支持已經(jīng)被擴(kuò)展到所有 ASP 內(nèi)置對(duì)象的屬性和方法中。上一版本的 ASP 僅在響應(yīng)和寫(xiě)入方面支持 UTF-8。


改進(jìn)的 POST 支持
ASP 目前可以從客戶端讀取 Chunked 編碼的 POST 數(shù)據(jù)。


ASP 掛起檢測(cè)
當(dāng) IIS 網(wǎng)站繁忙時(shí),可能會(huì)出現(xiàn)這樣的情況:迅速生成最大數(shù)量的 ASP 線程,其中的一些 ASP 線程被掛起,從而導(dǎo)致性能下降。 HSE_REQ_REPORT_UNHEALTHY 以及萬(wàn)維網(wǎng)發(fā)布服務(wù)(WWW 服務(wù))將回收主控 ASP.dll 的工作進(jìn)程,并將項(xiàng)目添加到事件日志中。


 注意 如果線程不響應(yīng)超時(shí),則將其視為“掛起”。


常用文件的緩存
目前,ASP 除了保留內(nèi)存緩存之外,還在磁盤(pán)上緩存一些最常用的文件。磁盤(pán)緩存的默認(rèn)位置是 %systemroot%\System32\inetsrv\ASP Compiled Templates。可以通過(guò)設(shè)置 AspDiskTemplateCacheDirectory 配置數(shù)據(jù)庫(kù)屬性來(lái)更改硬盤(pán)緩存的位置。


UNC 增強(qiáng)
目前,ASP 能夠處理 ASP 腳本中的 UNC 路徑。


ASP 中的 COM+ 服務(wù)
如果想要在以前版本的 IIS 中使用 ASP 應(yīng)用程序提供的 COM+ 服務(wù),您必須創(chuàng)建可以調(diào)用那些服務(wù)的方法的 COM 組件。目前,您可以配置 ASP 應(yīng)用程序以使用下面的 COM+ 服務(wù)而不必創(chuàng)建 COM 組件:


單元模型選擇:
ASP 現(xiàn)在能夠在多線程單元 (MTA) 中運(yùn)行其全部線程。如果 COM 組件主要是自由線程或雙線程組件,則將 ASP 線程作為 MTA 運(yùn)行可顯著改善性能。


要使 ASP 應(yīng)用程序能夠在 MTA 中運(yùn)行,您可以在應(yīng)用程序級(jí)別使用配置數(shù)據(jù)庫(kù)設(shè)置 AspExecuteInMTA。這意味著您可以讓一個(gè)應(yīng)用程序運(yùn)行于 ASP MTA 線程上,而讓第二個(gè)應(yīng)用程序運(yùn)行于 ASP STA(單線程單元)線程上。ASP 線程的默認(rèn)設(shè)置仍為 STA。


 要點(diǎn) 當(dāng)您將 ASP 應(yīng)用程序的運(yùn)行環(huán)境從 STA 切換到 MTA(或從 MTA 切換到 STA)時(shí),則模擬令牌將過(guò)時(shí)。這可能導(dǎo)致應(yīng)用程序在無(wú)模擬的情況下運(yùn)行,讓其用可能允許訪問(wèn)其他資源的進(jìn)程的標(biāo)識(shí)有效地運(yùn)行。如果您必須切換線程模型,請(qǐng)?jiān)谶M(jìn)行更改之前禁用該應(yīng)用程序并將其卸載。


下列示例設(shè)置默認(rèn)網(wǎng)站應(yīng)用程序 (W3SVC/1/ROOT) 在 MTA 中執(zhí)行:


On Error Resume Next
set providerObj = GetObject("winmgmts://MyMachine/root/MicrosoftIISv2")
' 獲得對(duì)名為“默認(rèn)網(wǎng)站”的 ASP 應(yīng)用程序的引用
set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")
WScript.Echo "Before: AspExecuteInMTA = " & IIsWebVirtualDirSettingObj.AspExecuteInMTA
' 將 ASP 應(yīng)用程序設(shè)置為在 MTA 中執(zhí)行
IIsWebVirtualDirSettingObj.AspExecuteInMTA = 1
IIsWebVirtualDirSettingObj.Put_()
WScript.Echo "After: AspExecuteInMTA = " & IIsWebVirtualDirSettingObj.AspExecuteInMTA
并排集合:
并排 (SxS) 集合允許 ASP 應(yīng)用程序指定要使用哪個(gè)版本的系統(tǒng) DLL 或傳統(tǒng) COM 組件,例如 MDAC、MFS、MSVCRT、MSXML 等。例如,如果您的 ASP 應(yīng)用程序依賴(lài) MSXML 2.0 版,則可以確保即使是在服務(wù)器上應(yīng)用了 Service Pack 之后,您的應(yīng)用程序仍使用 MSXML 2.0 版。任何新版本的 MSXML 仍安裝在計(jì)算機(jī)上,但是保留 2.0 版且由應(yīng)用程序使用。配置 SxS 程序集要求您知道 DLL 的路徑,且 COM+ 清單文件存在于每個(gè)需要使用 DLL 的虛擬目錄中。COM+ 清單是包含有關(guān) DLL 安裝位置信息的 XML 文件。IIS 不驗(yàn)證清單是否存在。清單的外觀類(lèi)似于下面的文件摘錄:



<?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 端以編程方式或者通過(guò)使用 IIS 管理器來(lái)啟用并排集合。


在 IIS 端使用 IIS 管理器啟用并排集合


在 IIS 管理器中,右鍵單擊網(wǎng)站或虛擬目錄,然后單擊“屬性”。
單擊“虛擬目錄”選項(xiàng)卡,然后單擊“配置”。
如果配置按鈕不可用,那么原因是還沒(méi)有為該虛擬目錄創(chuàng)建應(yīng)用程序。單擊“創(chuàng)建”以創(chuàng)建一個(gè)應(yīng)用程序。
在“應(yīng)用程序配置”對(duì)話框中,單擊“選項(xiàng)”選項(xiàng)卡。
選中“啟用并排集合”復(fù)選框。
在“清單文件名”框中,鍵入 COM+ 清單文件的名稱(chēng)。
單擊“確定”兩次。
要通過(guò)編程啟用并排集合,請(qǐng)?jiān)O(shè)置 AspAppServiceFlags 配置數(shù)據(jù)庫(kù)屬性的 AspEnableSxs 標(biāo)志。同時(shí)將 AspSxsName 配置數(shù)據(jù)庫(kù)屬性設(shè)置為 COM+ 清單的名稱(chēng)。在應(yīng)用程序級(jí)別設(shè)置這兩個(gè)配置數(shù)據(jù)庫(kù)屬性。


 要點(diǎn) 即使該功能可在應(yīng)用程序級(jí)別進(jìn)行配置,在任何一個(gè)應(yīng)用程序池中都只能使用一個(gè)版本的系統(tǒng) DLL。例如,如果應(yīng)用程序 App1 使用 MDAC 2.5 版,應(yīng)用程序 App2 使用 MDAC 2.4 版,則 App1 和 App2 不應(yīng)位于同一個(gè)應(yīng)用程序池中。如果它們位于同一個(gè)應(yīng)用程序池中,則首先加載的應(yīng)用程序加載與之相對(duì)應(yīng)的 MDAC 版本,在卸載這些應(yīng)用程序之前,其他應(yīng)用程序只能被迫使用該版本。


下列示例在默認(rèn)網(wǎng)站應(yīng)用程序 (W3SVC/1/ROOT) 上啟用并排集合。請(qǐng)注意,只要設(shè)置了 AspEnableTracker 屬性,AspAppServiceFlags 屬性就發(fā)生改變:


On Error Resume Next
set providerObj = GetObject("winmgmts://MyMachine/root/MicrosoftIISv2")
' 獲得對(duì)名為“默認(rèn)網(wǎng)站”的 ASP 應(yīng)用程序的引用
set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")
WScript.Echo "Before: AspEnableSxs = " & IIsWebVirtualDirSettingObj.AspEnableSxs
WScript.Echo "        AspSxsName = " & IIsWebVirtualDirSettingObj.AspSxsName
WScript.Echo "        AspAppServiceFlags = " & IIsWebVirtualDirSettingObj.AspAppServiceFlags
' 設(shè)置 ASP 應(yīng)用程序以啟用 COM+ 并排集合
IIsWebVirtualDirSettingObj.AspEnableSxs = 1
' 設(shè)置 AspSxsName 屬性
IIsWebVirtualDirSettingObj.AspSxsName = "VersionInfo"
' 將值保存到 IIS 配置數(shù)據(jù)庫(kù)中
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
COM+ 分區(qū):
COM+ 分區(qū)可用于將 Web 應(yīng)用程序隔離到它們各自的 COM+ 分區(qū)中。這對(duì)于禁止一個(gè) Web 應(yīng)用程訪問(wèn)另一個(gè) Web 應(yīng)用程序的專(zhuān)用 COM+ 應(yīng)用程序、配置信息和數(shù)據(jù)非常有用。COM+ 分區(qū)可擁有自定義 COM 組件的不同版本。例如,如果為兩個(gè)競(jìng)爭(zhēng)的公司宿主網(wǎng)站,它們都在其 Web 應(yīng)用程序中使用了 COM+,則可以使用 COM+ 分區(qū)來(lái)確保一個(gè)公司的 Web 應(yīng)用程序不能訪問(wèn)另一個(gè)公司的 Web 應(yīng)用程序中的 COM+ 組件。如果其中某個(gè)公司要求您更改它們都使用的 COM+ 應(yīng)用程序的某些功能,您可以在鏈接到它們的 Web 應(yīng)用程序的分區(qū)中隔離該 COM+ 應(yīng)用程序的新版本。


要在 IIS 端啟用 COM+ 分區(qū),請(qǐng)?jiān)趹?yīng)用程序級(jí)別設(shè)置 AspAppServiceFlags 配置數(shù)據(jù)庫(kù)屬性的 AspUsePartition 標(biāo)志。分區(qū)由 GUID(使用組件服務(wù)管理器管理單元?jiǎng)?chuàng)建)標(biāo)識(shí),它可在 AspPartitionID 配置數(shù)據(jù)庫(kù)屬性上進(jìn)行設(shè)置。如果未指定任何分區(qū),則使用默認(rèn)系統(tǒng)分區(qū)。詳細(xì)信息,請(qǐng)參閱 COM+ SDK 中的“創(chuàng)建和配置 COM+ 分區(qū)”或聯(lián)機(jī)查看 COM+ (Component Services)。


 要點(diǎn) 即使該功能可在應(yīng)用程序級(jí)別進(jìn)行配置,在任何一個(gè)應(yīng)用程序池中也只能使用一個(gè)版本的 COM+ 組件。例如,如果應(yīng)用程序 App1 使用名為 Shop.dll 的 1.0 版的自定義 COM+ 應(yīng)用程序,應(yīng)用程序 App2 使用 2.0 版的 Shop.dll,則 App1 和 App2 不應(yīng)位于同一個(gè)應(yīng)用程序池中。如果它們位于同一個(gè)應(yīng)用程序池中,則首先加載的應(yīng)用程序加載與之對(duì)應(yīng)的 Shop.dll 版本,在卸載這些應(yīng)用程序之前,另一個(gè)應(yīng)用程序只能被迫使用該版本。


下列示例在默認(rèn)網(wǎng)站應(yīng)用程序 (W3SVC/1/ROOT) 上啟用分區(qū)。請(qǐng)注意,只要設(shè)置了 AspEnableTracker 屬性,AspAppServiceFlags 屬性就發(fā)生改變。


On Error Resume Next
set providerObj = GetObject("winmgmts://MyMachine/root/MicrosoftIISv2")
' 獲得對(duì)名為“默認(rèn)網(wǎng)站”的 ASP 應(yīng)用程序的引用
set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")
WScript.Echo "Before: AspUsePartition = " & IIsWebVirtualDirSettingObj.AspUsePartition
WScript.Echo "        AspPartitionID = " & IIsWebVirtualDirSettingObj.AspPartitionID
WScript.Echo "        AspAppServiceFlags = " & IIsWebVirtualDirSettingObj.AspAppServiceFlags
' 設(shè)置 ASP 應(yīng)用程序以啟用 COM+ 分區(qū)
IIsWebVirtualDirSettingObj.AspUsePartition = 1
' 將 AspPartitionID 屬性設(shè)置為在組件服務(wù)管理器中配置的 GUID
' 當(dāng)您創(chuàng)建 COM+ 分區(qū)時(shí)
IIsWebVirtualDirSettingObj.AspPartitionID = "{00000000-0000-0000-0000-000000000000}"
' 將值保存到 IIS 配置數(shù)據(jù)庫(kù)中
IIsWebVirtualDirSettingObj.Put_()
' 再次獲得引用以刷新 AspAppServiceFlags 屬性。
set IIsWebVirtualDirSettingObj = Nothing
set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")
WScript.Echo "After: AspUsePartition = " & IIsWebVirtualDirSettingObj.AspUsePartition
WScript.Echo "       AspPartitionID = " & IIsWebVirtualDirSettingObj.AspPartitionID
WScript.Echo "       AspAppServiceFlags = " & IIsWebVirtualDirSettingObj.AspAppServiceFlags
跟蹤程序:
COM+ 跟蹤程序允許管理員或開(kāi)發(fā)人員調(diào)試 ASP 應(yīng)用程序。例如,如果 Web 應(yīng)用程序在服務(wù)器上產(chǎn)生問(wèn)題,則可以啟用 COM+ 跟蹤程序,以便確定 ASP 頁(yè)在何時(shí)加載、COM 組件在何時(shí)加載以及線程何時(shí)離開(kāi)網(wǎng)頁(yè)。在調(diào)試應(yīng)用程序之后,可禁用 COM+ 跟蹤程序,使應(yīng)用程序返回到正常的執(zhí)行速度。


要在 IIS 端上啟用 COM+ 跟蹤程序,請(qǐng)?jiān)趹?yīng)用程序級(jí)別中設(shè)置 AspAppServiceFlags 配置數(shù)據(jù)庫(kù)屬性的 AspEnableTracker 標(biāo)志。


下列示例在默認(rèn)網(wǎng)站應(yīng)用程序 (W3SVC/1/ROOT) 上啟用跟蹤。請(qǐng)注意,只要設(shè)置了 AspEnableTracker 屬性,AspAppServiceFlags 屬性就發(fā)生改變:


On Error Resume Next
set providerObj = GetObject("winmgmts://MyMachine/root/MicrosoftIISv2")
' 獲得對(duì)名為“默認(rèn)網(wǎng)站”的 ASP 應(yīng)用程序的引用
set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")
WScript.Echo "Before: AspEnableTracker = " & IIsWebVirtualDirSettingObj.AspEnableTracker
WScript.Echo "        AspAppServiceFlags = " & IIsWebVirtualDirSettingObj.AspAppServiceFlags
' 設(shè)置 ASP 應(yīng)用程序以啟用 COM+ 跟蹤
IIsWebVirtualDirSettingObj.AspEnableTracker = 1
IIsWebVirtualDirSettingObj.Put_()
' 再次獲得引用以刷新 AspAppServiceFlags 屬性。
set IIsWebVirtualDirSettingObj = Nothing
set IIsWebVirtualDirSettingObj = providerObj.get("IIsWebVirtualDirSetting='W3SVC/1/ROOT'")
WScript.Echo "After: AspEnableTracker = " & IIsWebVirtualDirSettingObj.AspEnableTracker
WScript.Echo "       AspAppServiceFlags = " & IIsWebVirtualDirSettingObj.AspAppServiceFlags
事務(wù):從 IIS 4.0 版起,ASP 頁(yè)面中已經(jīng)支持事務(wù)的使用。但是,IIS 更改了事務(wù)的內(nèi)部實(shí)現(xiàn)以便利用 COM+ 服務(wù)。IIS 不再通過(guò)創(chuàng)建 COM 組件來(lái)容納事務(wù),而是直接訪問(wèn) COM+ 事務(wù)服務(wù),因而大大地提高了事務(wù)處理的速度。與以前一樣,事務(wù)只能在頁(yè)面級(jí)別進(jìn)行配置,配置時(shí)使用 @TRANSACTION 指令和 ASP 內(nèi)置對(duì)象的事件,該對(duì)象名為 ObjectContext。
ASP 的新配置數(shù)據(jù)庫(kù)屬性
下面的配置數(shù)據(jù)庫(kù)設(shè)置已被添加到此版本的 ASP 中。







配置數(shù)據(jù)庫(kù)屬性名 用途
AspAppServiceFlags 啟用諸如 COM+ 并排集合(以前被稱(chēng)為 Fusion)、分區(qū)等功能。
AspDiskTemplateCacheDirectory 指定 ASP 磁盤(pán)緩存的位置。
AspExecuteInMTA 使 ASP 線程能夠在多線程單元中執(zhí)行。
AspKeepSessionIDSecure 將 ASP 會(huì)話 Cookie 安全地發(fā)送到瀏覽器。
AspMaxDiskTemplateCacheFiles 指定 ASP 的最大硬盤(pán)緩存。
AspPartitionID 為應(yīng)用程序指定所使用的 COM+ 分區(qū)。
AspRunOnEndAnonymously 使 ASP 能夠以匿名方式運(yùn)行 global.asa Application_OnEndSession_OnEnd 事件。
AspBufferingLimit 指定緩沖區(qū)大小的限制。
AspMaxRequestEntityAllowed 指定 ASP 請(qǐng)求的實(shí)體中允許的最大字節(jié)數(shù)。
AspSxsName 允許 ASP 應(yīng)用程序指定要使用的系統(tǒng) DLL 或 傳統(tǒng) COM 組件的版本。



最新更新
·數(shù)據(jù)庫(kù)被掛馬的ASP處理方法
·ASP快速獲取遠(yuǎn)程文件大小的方
·用ASP屏蔽迅雷和旋風(fēng)下載工具
·解決ASP中傳送中文參數(shù)亂碼的
·ASP+AJAX做類(lèi)似Google的搜索
·ASP的一個(gè)非常棒的Debug類(lèi)(
·ASP中常用的服務(wù)器檢測(cè)源代碼
·優(yōu)化ASP中執(zhí)行SQL效率的五個(gè)
·ASP種msxml3.dll 800c0005錯(cuò)
·掛QQ的ASP版本網(wǎng)頁(yè)源代碼
相關(guān)信息
·如何解決IIS 5的 HTTP500 內(nèi)部錯(cuò)誤
·IIS 5.1和IIS 6.0一些顯著的重要區(qū)別
畫(huà)心
愚愛(ài)
偏愛(ài)
火苗
白狐
畫(huà)沙
犯錯(cuò)
歌曲
傳奇
稻香
小酒窩
獅子座
小情歌
全是愛(ài)
棉花糖
海豚音
我相信
甩蔥歌
這叫愛(ài)
shero
走天涯
琉璃月
Nobody
我愛(ài)他
套馬桿
愛(ài)是你我
最后一次
少女時(shí)代
灰色頭像
斷橋殘雪
美了美了
狼的誘惑
我很快樂(lè)
星月神話
心痛2009
愛(ài)丫愛(ài)丫
半城煙沙
旗開(kāi)得勝
郎的誘惑
愛(ài)情買(mǎi)賣(mài)
2010等你來(lái)
我叫小沈陽(yáng)
i miss you
姑娘我愛(ài)你
我們都一樣
其實(shí)很寂寞
我愛(ài)雨夜花
變心的玫瑰
犀利哥之歌
你是我的眼
你是我的OK繃
貝多芬的悲傷
哥只是個(gè)傳說(shuō)
丟了幸福的豬
找個(gè)人來(lái)愛(ài)我
要嫁就嫁灰太狼
如果這就是愛(ài)情
我們沒(méi)有在一起
寂寞在唱什么歌
斯琴高麗的傷心
別在我離開(kāi)之前離開(kāi)
不是因?yàn)榧拍畔肽?/a>
愛(ài)上你等于愛(ài)上了錯(cuò)
在心里從此永遠(yuǎn)有個(gè)你
一個(gè)人的寂寞兩個(gè)人的錯(cuò)