共用方式為


ASP COM Plus < comPlus>

元素 <comPlus><asp> 元素會針對 Internet Information Services (IIS) 7 中的 Active Server Pages (ASP) 設定下列 COM+ 設定:

  • appServiceFlags屬性包含必須設定為在 IIS 7 應用程式上啟用 COM+ 服務的旗標。 啟用旗標之後,您可能也需要設定其他屬性。 如需詳細資訊,請參閱本文稍後的組 一節。

  • executeInMta屬性會指定 ASP 是否可以在多執行緒 Apartment 中執行腳本。 ASP 能夠在多執行緒 Apartment (MTA) 中執行其所有線程。 如果您的 COM 元件主要是自由執行緒或兩執行緒,則以 MTA 身分執行 ASP 執行緒可以大幅改善效能。 根據預設, executeInMta 屬性會設定為 false,這表示 ASP 不會在 MTA 中執行。 在應用層級將此屬性設定為 true ,讓 ASP 能夠在 MTA 中執行。

  • partitionId屬性會指定 COM+ 磁碟分割的全域唯一識別碼 (GUID) ,用來將 Web 應用程式隔離成自己的 COM+ 分割區。 COM+ 分割區會保存您自己自訂 COM 元件的不同版本。

    注意

    如果您指定partitionId屬性的值,您也必須設定appServiceFlags屬性的UsePartition旗標。

  • sxsName屬性會指定 COM+ 應用程式的名稱,並存 (SxS) 元件。 並存 (SxS) 元件可讓 ASP 應用程式指定要使用的 SxS 支援系統 DLL 版本,例如 MSVCRT、MSXML、COMCTL、GDIPLUS 等等。

    注意

    如果您指定sxsName屬性的值,您也必須設定appServiceFlags屬性的EnableSxS旗標。

  • trackThreadingModel屬性會指定 IIS 7 是否會檢查應用程式所建立 (COM 物件的任何元件執行緒模型) 。 這個中繼基底屬性的慣用設定為 false。 如果 trackThreadingModel 設定為 true,則適用下列條件:

    • ASP 會使用系統資源來追蹤執行緒模型,以減少 ASP 應用程式的效能。

    • OnStartPageOnEndPage 方法外部的 ASP 應用程式中建立的物件會早于預期發行,這會導致應用程式的延展性降低,並可防止元件在物件解構函式方法中寫入回應。

      如果 trackThreadingModel 屬性設定為 false,而且您會將應用程式範圍提供給您所建立的元件,這些元件必須匯總自由執行緒封送處理器。 如果您未匯總自由執行緒封送處理器,當您嘗試建立元件的實例時,ASP 會產生錯誤。 如需詳細資訊,請參閱 在 IIS 中選取元件的執行緒模型

相容性

版本 備註
IIS 10.0 <comPlus> IIS 10.0 中未修改專案。
IIS 8.5 <comPlus> 在 IIS 8.5 中修改專案。
IIS 8.0 在 IIS 8.0 中未修改專案 <comPlus>
IIS 7.5 <comPlus> 在 IIS 7.5 中修改專案。
IIS 7.0 元素 <comPlus><asp> 元素是在 IIS 7.0 中引進。
IIS 6.0 元素 <comPlus> 會取代下列 IIS 6.0 中繼基底屬性:
  • AspAppServiceFlags
  • AspExecuteInMTA
  • AspPartitionID
  • AspSxsName
  • AspTrackThreadingModel

安裝程式

若要在 Web 服務器上支援及設定 ASP 應用程式,您必須安裝 ASP 模組。 若要安裝 ASP 模組,請使用下列步驟。

Windows Server 2012 或 Windows Server 2012 R2

  1. 在工作列上,按一下 [伺服器管理員]。 - 在伺服器管理員中,按一下 [管理] 功能表,然後按一下 [新增角色和功能]。 - 在 [ 新增角色和功能 精靈] 中,按 [下一步]。 選取安裝類型,然後按 [ 下一步]。 選取目的地伺服器,然後按 [ 下一步]。 - 在 [ 伺服器角色] 頁面上,依序展開 [Web 服務器] ([IIS) ]、[ Web 服務器]、[ 應用程式開發],然後選取 [ASP]。

    Web 服務器和應用程式開發窗格的螢幕擷取畫面,其中已選取 [S P]。

    如果 [ 新增 ASP 所需的功能? ] 對話方塊隨即出現,請按一下 [ 新增功能]。 (只有在您尚未在伺服器上安裝 ISAPI 延伸模組角色服務時,才會顯示此頁面。) - 在 [ 伺服器角色 ] 頁面上,按 [下一步]。 - 在 [ 選取功能 ] 頁面上,按 [下一步]。 - 在 [ 確認安裝選取專案] 頁面上,按一下 [ 安裝]。 - 在 [ 結果] 頁面上,按一下 [ 關閉]。

Windows 8 或Windows 8.1

  1. 在 [開始] 畫面上,將指標全部移至左下角,以滑鼠右鍵按一下 [開始] 按鈕,然後按一下[主控台]。

  2. 主控台中,按一下 [程式和功能],然後按一下 [開啟或關閉 Windows 功能]。

  3. 序展開 [Internet Information Services]、[ 萬維網服務]、[ 應用程式開發功能],然後選取 [ ASP]。

    此螢幕擷取畫面顯示已選取 [S P] 展開的 [萬維網服務和應用程式開發功能] 節點。

    注意

    如果尚未安裝 ISAPI 延伸模組角色,將會選取該角色。

  4. 按一下 [確定]。

  5. 按一下 [關閉] 。

Windows Server 2008 或 Windows Server 2008 R2

  1. 在工作列上,按一下 [開始],指向 [系統管理工具],然後按一下[伺服器管理員]。
  2. [伺服器管理員階層] 窗格中,展開 [角色],然後按一下 [Web 服務器] (IIS)
  3. [Web 服務器 (IIS) ] 窗格中,捲動至 [ 角色服務 ] 區段,然後按一下 [ 新增角色服務]。
  4. 在 [新增角色服務精靈] 的 [選取角色服務] 頁面上,選取[ASP]。
    [選取角色服務] 頁面的螢幕擷取畫面,其中顯示已展開的應用程式開發節點和已選取的 S P。
  5. 如果 [ 新增 ASP 所需的角色服務] 對話方塊出現,請按一下 [新增必要的角色服務]。 (只有在伺服器上尚未安裝 ISAPI 延伸模組角色服務時,才會顯示此頁面。)
    [新增 S P] 對話方塊所需的角色服務的螢幕擷取畫面,其中已選取 [Web 服務器 I S]。
  6. 在 [選取角色服務] 頁面上,按 [下一步]
  7. 在 [確認安裝選項] 頁面上,按一下 [安裝]
  8. 在 [結果] 頁面上,按一下 [關閉]

Windows Vista 或 Windows 7

  1. 在工作列上,按一下 [開始],然後按一下[主控台]。

  2. 主控台中,按一下 [程式和功能],然後按一下 [開啟或關閉 Windows 功能]。

  3. 序展開 [Internet Information Services]、[ 萬維網服務]、[ 應用程式開發功能]。

  4. 選取 [ASP],然後按一下 [ 確定]。

    [網際網路資訊服務和應用程式開發功能] 窗格的螢幕擷取畫面,其中已選取 [S P]。

作法

如何設定網站或應用程式的 ASP 會話狀態設定

  1. (IIS) 管理員開啟 Internet Information Services

    • 如果您使用 Windows Server 2012 或 Windows Server 2012 R2:

      • 在工作列上,依序按一下 [伺服器管理員]、[工具],然後按一下 [Internet Information Services] ([IIS) 管理員]。
    • 如果您使用 Windows 8 或 Windows 8.1:

      • 按住Windows鍵,按字母X,然後按一下[主控台]。
      • 按一下 [ 系統管理工具],然後按兩下 [Internet Information Services] ([IIS) 管理員]。
    • 如果您使用 Windows Server 2008 或 Windows Server 2008 R2:

      • 在工作列上,按一下 [ 開始],指向 [ 系統管理工具],然後按一下 [ Internet Information Services (IIS) 管理員]。
    • 如果您使用 Windows Vista 或 Windows 7:

      • 在工作列上,按一下 [開始],然後按一下[主控台]。
      • 按兩下 [系統管理工具],然後按兩下 [ Internet Information Services] (IIS) Manager
  2. 在 [ 連線] 窗格中,展開伺服器名稱、展開 [網站],然後流覽至您想要設定的網站或 Web 應用程式。

  3. 在月臺或應用程式 [首頁] 窗格中,按兩下 [ASP]。
    [首頁] 窗格的螢幕擷取畫面,其中顯示已選取的 S P。

  4. [ASP ] 窗格中,展開 [ Com Plus 屬性 ] 區段並設定您想要的設定。
    S P 窗格的螢幕擷取畫面,其中已醒目提示 [Com Plus 屬性] 區段。

  5. 在 [動作] 窗格中按一下 [套用]

組態

屬性

屬性 描述
appServiceFlags 選擇性旗標屬性。

包含必須設定為在 IIS 應用程式上啟用 COM+ 服務的旗標。

appServiceFlags屬性可以是下列其中一個可能的值。 預設值是 None
描述
None 指定未設定旗標。

數值為 0
EnableTracker 設定此旗標可啟用 COM+ 追蹤器,讓系統管理員或開發人員對 ASP 應用程式進行偵錯。

數值為 1
EnableSxS 設定此旗標可啟用 COM+ 並存元件,可讓 ASP 應用程式指定要使用的系統 DLL 或傳統 COM 元件版本,例如 WinHTTP 5.1、Shell Common Controls 6.0 版 (Comctl32.dll) 、GDI Plus 1.0 版 (GDIplus.dll) ,以及 Visual C++ 執行時間程式庫 6.0 版。 如果設定此旗標,您也必須指定 sxsName 屬性的值。

數值為 2
UsePartition 設定此旗標會啟用 COM+ 資料分割,可用來將 Web 應用程式隔離成自己的 COM+ 分割區。 COM+ 分割區可以保存您自己自訂 COM 元件的不同版本。 如果設定此旗標,您也必須指定 partitionId 屬性的值。

數值為 4
executeInMta 選擇性的 Boolean 屬性。

指定 ASP 是否在多執行緒環境中執行。

預設值是 false
partitionId 選擇性字串屬性。

指定 COM+ 磁碟分割的全域唯一識別碼 (GUID) 。

注意:appServiceFlags屬性設定為UsePartition時,需要這個屬性

預設值是 00000000-0000-0000-0000-000000000000
sxsName 選擇性字串屬性。

注意:appServiceFlags 屬性設定為 EnableSxS時,需要這個屬性。

指定 COM+ 應用程式的名稱。
trackThreadingModel 選擇性的 Boolean 屬性。

指定是否啟用執行緒模型檢查。 true值表示 IIS 會接受應用程式所建立元件的執行緒模型。

預設值是 false

子元素

無。

組態範例

下列設定範例示範如何設定 IIS 以啟用執行緒模型檢查,並設定 ASP 在多執行緒區間中執行。

<configuration>
   <system.webServer>
      <asp>
         <comPlus trackThreadingModel="true" executeInMta="true" />
      </asp>
   </system.webServer>
</configuration>

範例程式碼

下列程式碼範例示範如何設定 IIS,以啟用執行緒模型檢查,並設定 ASP 在多執行緒區間中執行。

AppCmd.exe

appcmd.exe set config "Default Web Site" -section:system.webServer/asp /comPlus.trackThreadingModel:"True" /commit:apphost
appcmd.exe set config "Default Web Site" -section:system.webServer/asp /comPlus.executeInMta:"True" /commit:apphost

注意

當您使用 AppCmd.exe 來設定這些設定時,請務必將 認可 參數 apphost 設定為 。 這會將組態設定認可至ApplicationHost.config檔案中的適當位置區段。

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample
{
   private static void Main()
   {
      using (ServerManager serverManager = new ServerManager())
      {
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection aspSection = config.GetSection("system.webServer/asp", "Default Web Site");

         ConfigurationElement comPlusElement = aspSection.GetChildElement("comPlus");
         comPlusElement["trackThreadingModel"] = true;
         comPlusElement["executeInMta"] = true;

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample

   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim aspSection As ConfigurationSection = config.GetSection("system.webServer/asp", "Default Web Site")

      Dim comPlusElement As ConfigurationElement = aspSection.GetChildElement("comPlus")
      comPlusElement("trackThreadingModel") = True
      comPlusElement("executeInMta") = True

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";

var aspSection = adminManager.GetAdminSection("system.webServer/asp", "MACHINE/WEBROOT/APPHOST/Default Web Site");
var comPlusElement = aspSection.ChildElements.Item("comPlus");
comPlusElement.Properties.Item("trackThreadingModel").Value = true;
comPlusElement.Properties.Item("executeInMta").Value = true;

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"

Set aspSection = adminManager.GetAdminSection("system.webServer/asp", "MACHINE/WEBROOT/APPHOST/Default Web Site")
Set comPlusElement = aspSection.ChildElements.Item("comPlus")
comPlusElement.Properties.Item("trackThreadingModel").Value = True
comPlusElement.Properties.Item("executeInMta").Value = True

adminManager.CommitChanges()