ASP COM+: <comPlus>
<asp>
要素の <comPlus>
要素は、インターネット インフォメーション サービス (IIS) 7 の Active Server Pages (ASP) に対して次の COM+ の設定を構成します。
appServiceFlags プロパティには、IIS 7 アプリケーションで COM+ サービスを有効にするために設定する必要があるフラグが含まれます。 フラグを有効にすると、他のプロパティの設定も必要な場合があります。 詳しくは、後の「構成」セクションをご覧ください。
executeInMta 属性は、ASP がマルチスレッド アパートメントでスクリプトを実行できるかどうかを指定します。 ASP は、そのすべてのスレッドをマルチスレッド アパートメント (MTA) で実行できます。 COM コンポーネントが主にフリー スレッドまたはボース スレッドである場合、ASP スレッドを MTA として実行すると、パフォーマンスが大幅に向上する可能性があります。 既定では、executeInMta プロパティは false に設定されます。これは、ASP が MTA で実行されないことを意味します。 ASP を MTA で実行できるようにするには、このプロパティをアプリケーション レベルで true に設定します。
partitionId 属性は、COM+ パーティションのグローバル一意識別子 (GUID) を指定します。これは、Web アプリケーションを専用の COM+ パーティションに分離するために使われます。 COM+ パーティションは、ユーザー独自のカスタム COM コンポーネントのさまざまなバージョンを保持します。
Note
partitionId 属性の値を指定する場合は、appServiceFlags 属性の UsePartition フラグも設定する必要があります。
sxsName 属性は、COM+ アプリケーションの名前を指定し、サイド バイ サイド (SxS) アセンブリを有効にします。 サイド バイ サイド (SxS) アセンブリを使うと、SxS でサポートされるシステム DLL のバージョン (MSVCRT、MSXML、COMCTL、GDIPLUS など) のどれを使うかを、ASP アプリケーションで指定できます。
Note
sxsName 属性の値を指定する場合は、appServiceFlags 属性の EnableSxS フラグも設定する必要があります。
trackThreadingModel 属性は、アプリケーションで作成するコンポーネント (COM オブジェクト) のスレッド モデルを IIS 7 がチェックするかどうかを指定します。 このメタベース属性のお勧めする設定は false です。 trackThreadingModel を true に設定した場合、次のような状態になります。
ASP はシステム リソースを使ってスレッド モデルを追跡するので、ASP アプリケーションのパフォーマンスが低下します。
OnStartPage または OnEndPage メソッドの外部で ASP アプリケーションにおいて作成されたオブジェクトは、予想より早く解放されます。これにより、アプリケーションのスケーラビリティが低下し、コンポーネントがオブジェクト デストラクター メソッドで応答に書き込めない可能性があります。
trackThreadingModel 属性が false に設定されていて、作成するコンポーネントにアプリケーション スコープを指定した場合、それらのコンポーネントはフリースレッド マーシャラーを集計する必要があります。 フリースレッド マーシャラーを集計しないと、コンポーネントのインスタンスを作成しようとしたときに、ASP でエラーが発生します。 詳しくは、「IIS でのコンポーネントのスレッド モデルの選択」をご覧ください。
互換性
バージョン | メモ |
---|---|
IIS 10.0 | <comPlus> 要素は、IIS 10.0 では変更されませんでした。 |
IIS 8.5 | <comPlus> 要素は、IIS 8.5 では変更されませんでした。 |
IIS 8.0 | <comPlus> 要素は、IIS 8.0 では変更されませんでした。 |
IIS 7.5 | <comPlus> 要素は、IIS 7.5 では変更されませんでした。 |
IIS 7.0 | <asp> 要素の <comPlus> 要素が IIS 7.0 で導入されました。 |
IIS 6.0 | <comPlus> 要素は、次の IIS 6.0 メタベース プロパティを置き換えます。
|
段取り
Web サーバーで ASP アプリケーションをサポートおよび構成するには、ASP モジュールをインストールする必要があります。 ASP モジュールをインストールするには、次の手順のようにします。
Windows Server 2012 または Windows Server 2012 R2
タスク バーで [サーバー マネージャー]をクリックします。 - [サーバー マネージャー] で、[管理] メニューをクリックし、[役割と機能の追加] をクリックします。 - 役割と機能の追加ウィザードで、[次へ] をクリックします。 インストールの種類を選択し、[次へ] をクリックします。 対象サーバーを選択し、[次へ] をクリックします。 - [サーバーの役割] ページで、[Web サーバー (IIS)]、[Web サーバー]、[アプリケーション開発] の順に展開して、[ASP] を選びます。
[ASP に必要な機能を追加しますか?] ダイアログ ボックスが表示されたら、[機能の追加] をクリックします。 (このページは、ISAPI 拡張機能の役割サービスをサーバーにまだインストールしていない場合にのみ表示されます)。- [サーバーの役割] ページで、[次へ] をクリックします。 - [機能の選択] ページで、[次へ] をクリックします。 - [インストール オプションの確認] ページで、[インストール] をクリックします。 - [結果] ページで、[閉じる] をクリックします。
Windows 8 または Windows 8.1
[スタート] 画面で、ポインターを左下隅まで移動し、[スタート] ボタンを右クリックし、[コントロール パネル] をクリックします。
[コントロール パネル] で [プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。
[インターネット インフォメーション サービス]、[World Wide Web サービス]、[アプリケーション開発機能] の順に展開して、[ASP] を選択します。
Note
ISAPI 拡張機能の役割がまだインストールされていない場合、それが選択されます。
OK をクリックします。
閉じるをクリックします。
Windows Server 2008 または Windows Server 2008 R2
- タスク バーで [スタート] をクリックし、[管理ツール] をポイントして、[サーバー マネージャ] をクリックします。
- [サーバー マネージャ] 階層ウィンドウで [役割] を展開し、[Web サーバー (IIS)] をクリックします。
- [Web サーバー (IIS)] ウィンドウで、[役割サービス] セクションまでスクロールし、[役割サービスの追加] をクリックします。
- 役割サービスの追加ウィザードの [役割サービスの選択] ページで、[ASP] を選択します。
- [ASP で必要な役割サービスの追加] ダイアログ ボックスが表示されたら、[必要な役割サービスの追加] をクリックします。 (このページは、ISAPI 拡張機能の役割サービスをサーバーにまだインストールしていない場合にのみ表示されます)。
- [役割サービスの選択] ページで、[次へ] を選択します。
- [インストール オプションの確認] ページで、[インストール] をクリックします。
- [結果] ページで、 [閉じる]をクリックします。
Windows Vista または Windows 7
タスク バーで、[スタート]、[コントロール パネル] の順にクリックします。
[コントロール パネル] で [プログラムと機能] をクリックし、[Windows の機能の有効化または無効化] をクリックします。
[インターネット インフォメーション サービス]、[World Wide Web サービス]、[アプリケーション開発機能] の順に展開します。
[ASP] を選択して、[OK] をクリックします。
操作方法
サイトまたはアプリケーションの ASP セッション状態の設定を構成する方法
インターネット インフォメーション サービス (IIS) マネージャーを開きます。
Windows Server 2012 または Windows Server 2012 R2 を使用している場合:
- タスク バーで、[サーバー マネージャー] をクリックし、[ツール]、[インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
Windows 8 または Windows 8.1 を使用している場合:
- Windows キーを押しながら文字 X を押し、[コントロール パネル] をクリックします。
- [管理ツール] をクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
Windows Server 2008 または Windows Server 2008 R2 を使用している場合:
- タスク バーで、[スタート] ボタンをクリックし、[管理ツール]、[インターネット インフォメーション サービス (IIS) マネージャー] の順にクリックします。
Windows Vista または Windows 7 を使用している場合:
- タスク バーで、[スタート]、[コントロール パネル] の順にクリックします。
- [管理ツール] をダブルクリックし、[インターネット インフォメーション サービス (IIS) マネージャー] をダブルクリックします。
[接続] ウィンドウで、サーバー名を展開して [サイト] を展開し、構成する Web サイトまたは Web アプリケーションに移動します。
[操作] ペインで [適用] をクリックします。
構成
属性
属性 | 説明 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
appServiceFlags |
省略可能なフラグ属性。 IIS 7 アプリケーションで COM+ サービスを有効にするために設定する必要があるフラグが含まれます。 appServiceFlags 属性には、次のいずれかの値を指定できます。 既定値は None です。
|
||||||||||
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
Note
AppCmd.exe を使用してこれらの設定を構成するときは、commit パラメーターを必ず 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()