熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows服務器 >> 正文

IIS 6.0下ASP的一些新增加的功能

2022-06-13   來源: Windows服務器 

  ASP 的新增功能
  除了內部性能增強和優化外該版本的 Active Server Pages(ASP) 還具有如下新功能
  
  更好的國際化和 UTF 支持
  改進的 POST 支持
  ASP 掛起檢測
  常用文件的緩存
  UNC 增強
  ASP 中的 COM+ 服務
  單元模型選擇
  並排集合
  COM+ 分區
  跟蹤程序
  事務
  ASP 的新配置數據庫屬性
  更好的國際化和 UTF 支持
  UTF 支持已經被擴展到所有 ASP 內置對象的屬性和方法中上一版本的 ASP 僅在響應和寫入方面支持 UTF
  
  改進的 POST 支持
  ASP 目前可以從客戶端讀取 Chunked 編碼的 POST 數據
  
  ASP 掛起檢測
  當 IIS 網站繁忙時可能會出現這樣的情況迅速生成最大數量的 ASP 線程其中的一些 ASP 線程被掛起從而導致性能下降 HSE_REQ_REPORT_UNHEALTHY 以及萬維網發布服務(WWW 服務)將回收主控 ASPdll 的工作進程並將項目添加到事件日志中
  
  注意 如果線程不響應超時則將其視為掛起
  
  常用文件的緩存
  目前ASP 除了保留內存緩存之外還在磁盤上緩存一些最常用的文件磁盤緩存的默認位置是 %systemroot%\System\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)時則模擬令牌將過時這可能導致應用程序在無模擬的情況下運行讓其用可能允許訪問其他資源的進程的標識有效地運行如果您必須切換線程模型請在進行更改之前禁用該應用程序並將其卸載
  
  下列示例設置默認網站應用程序 (WSVC//ROOT) 在 MTA 中執行
  
  On Error Resume Next
  set providerObj = GetObject(winmgmts://MyMachine/root/MicrosoftIISv)
   獲得對名為默認網站的 ASP 應用程序的引用
  set IIsWebVirtualDirSettingObj = providerObjget(IIsWebVirtualDirSetting=WSVC//ROOT)
  WScriptEcho Before: AspExecuteInMTA = & IIsWebVirtualDirSettingObjAspExecuteInMTA
   將 ASP 應用程序設置為在 MTA 中執行
  IIsWebVirtualDirSettingObjAspExecuteInMTA =
  IIsWebVirtualDirSettingObjPut_()
  WScriptEcho After: AspExecuteInMTA = & IIsWebVirtualDirSettingObjAspExecuteInMTA
  並排集合
  並排 (SxS) 集合允許 ASP 應用程序指定要使用哪個版本的系統 DLL 或傳統 COM 組件例如 MDACMFSMSVCRTMSXML 等例如如果您的 ASP 應用程序依賴 MSXML 則可以確保即使是在服務器上應用了 Service Pack 之後您的應用程序仍使用 MSXML 任何新版本的 MSXML 仍安裝在計算機上但是保留 版且由應用程序使用配置 SxS 程序集要求您知道 DLL 的路徑且 COM+ 清單文件存在於每個需要使用 DLL 的虛擬目錄中COM+ 清單是包含有關 DLL 安裝位置信息的 XML 文件IIS 不驗證清單是否存在清單的外觀類似於下面的文件摘錄
  
  <?xml version= encoding=UTF standalone=yes?>
  <assembly xmlns=urn:schemasmicrosoftcom:asmv manifestVersion=>
  <assemblyIdentity publicKeyToken=eabb type=win name=TestDir version= processorArchitecture=x/>
  <file name=DirCompdll hash=cafbedacebfdd hashalg=SHA>
  <comClass clsid={CCCEFCADDBDCDC} progid=DirCompPathInfo threadingModel=apartment/>
  <typelib tlbid={AADBADBDEDD} version= helpdir=/>
  </file>
  </assembly>
  
  您可以在 IIS 端以編程方式或者通過使用 IIS 管理器來啟用並排集合
  
  在 IIS 端使用 IIS 管理器啟用並排集合
  
  在 IIS 管理器中右鍵單擊網站或虛擬目錄然後單擊屬性
  單擊虛擬目錄選項卡然後單擊配置
  如果配置按鈕不可用那麼原因是還沒有為該虛擬目錄創建應用程序單擊創建以創建一個應用程序
  在應用程序配置對話框中單擊選項選項卡
  選中啟用並排集合復選框
  在清單文件名框中鍵入 COM+ 清單文件的名稱
  單擊確定兩次
  要通過編程啟用並排集合請設置 AspAppServiceFlags 配置數據庫屬性的 AspEnableSxs 標志同時將 AspSxsName 配置數據庫屬性設置為 COM+ 清單的名稱在應用程序級別設置這兩個配置數據庫屬性
  
  要點 即使該功能可在應用程序級別進行配置在任何一個應用程序池中都只能使用一個版本的系統 DLL例如如果應用程序 App 使用 MDAC 應用程序 App 使用 MDAC 則 App 和 App 不應位於同一個應用程序池中如果它們位於同一個應用程序池中則首先加載的應用程序加載與之相對應的 MDAC 版本在卸載這些應用程序之前其他應用程序只能被迫使用該版本
  
  下列示例在默認網站應用程序 (WSVC//ROOT) 上啟用並排集合請注意只要設置了 AspEnableTracker 屬性AspAppServiceFlags 屬性就發生改變
  
  On Error Resume Next
  set providerObj = GetObject(winmgmts://MyMachine/root/MicrosoftIISv)
   獲得對名為默認網站的 ASP 應用程序的引用
  set IIsWebVirtualDirSettingObj = providerObjget(IIsWebVirtualDirSetting=WSVC//ROOT)
  WScriptEcho Before: AspEnableSxs = & IIsWebVirtualDirSettingObjAspEnableSxs
  WScriptEcho AspSxsName = & IIsWebVirtualDirSettingObjAspSxsName
  WScriptEcho AspAppServiceFlags = & IIsWebVirtualDirSettingObjAspAppServiceFlags
   設置 ASP 應用程序以啟用 COM+ 並排集合
  IIsWebVirtualDirSettingObjAspEnableSxs =
   設置 AspSxsName 屬性
  IIsWebVirtualDirSettingObjAspSxsName = VersionInfo
   將值保存到 IIS 配置數據庫中
  IIsWebVirtualDirSettingObjPut_()
   再次獲得引用以刷新 AspAppServiceFlags 屬性
  set IIsWebVirtualDirSettingObj = Nothing
  set IIsWebVirtualDirSettingObj = providerObjget(IIsWebVirtualDirSetting=WSVC//ROOT)
  WScriptEcho After: AspEnableSxs = & IIsWebVirtualDirSettingObjAspEnableSxs
  WScriptEcho AspSxsName = & IIsWebVirtualDirSettingObjAspSxsName
  WScriptEcho AspAppServiceFlags = & IIsWebVirtualDirSettingObjAspAppServiceFlags
  COM+ 分區
  COM+ 分區可用於將 Web 應用程序隔離到它們各自的 COM+ 分區中這對於禁止一個 Web 應用程訪問另一個 Web 應用程序的專用 COM+ 應用程序配置信息和數據非常有用COM+ 分區可擁有自定義 COM 組件的不同版本例如如果為兩個競爭的公司宿主網站它們都在其 Web 應用程序中使用了 COM+則可以使用 COM+ 分區來確保一個公司的 Web 應用程序不能訪問另一個公司的 Web 應用程序中的 COM+ 組件如果其中某個公司要求您更改它們都使用的 COM+ 應用程序的某些功能您可以在鏈接到它們的 Web 應用程序的分區中隔離該 COM+ 應用程序的新版本
  
  要在 IIS 端啟用 COM+ 分區請在應用程序級別設置 AspAppServiceFlags 配置數據庫屬性的 AspUsePartition 標志分區由 GUID(使用組件服務管理器管理單元創建)標識它可在 AspPartitionID 配置數據庫屬性上進行設置如果未指定任何分區則使用默認系統分區詳細信息請參閱 COM+ SDK 中的創建和配置 COM+ 分區或聯機查看 COM+ (Component Services)
  
  要點 即使該功能可在應用程序級別進行配置在任何一個應用程序池中也只能使用一個版本的 COM+ 組件例如如果應用程序 App 使用名為 Shopdll 的 版的自定義 COM+ 應用程序應用程序 App 使用 版的 Shopdll則 App 和 App 不應位於同一個應用程序池中如果它們位於同一個應用程序池中則首先加載的應用程序加載與之對應的 Shopdll 版本在卸載這些應用程序之前另一個應用程序只能被迫使用該版本
  
  下列示例在默認網站應用程序 (WSVC//ROOT) 上啟用分區請注意只要設置了 AspEnableTracker 屬性AspAppServiceFlags 屬性就發生改變
  
  On Error Resume Next

From:http://tw.wingwit.com/Article/os/fwq/201311/10214.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.