WCF-NetTcp 受信場所を構成する方法
WCF-NetTcp 受信場所は、プログラムから、または BizTalk 管理コンソールを使用して構成できます。
構成プロパティ
BizTalk エクスプローラー オブジェクト モデルにより、プログラムから受信場所を作成および構成することができます。 BizTalk エクスプローラー オブジェクト モデルは、TransportTypeData の読み取り/書き込みプロパティを持つIReceiveLocation 受信場所構成インターフェイスを公開します。 このプロパティでは、名前と値の組の XML 文字列の形式で WCF-NetTcp 受信場所の構成プロパティ バッグを指定できます。 BizTalk エクスプローラー オブジェクト モデルでこのプロパティを設定するには、IReceiveLocation インターフェイスの InboundTransportLocation プロパティを設定する必要があります。
IReceiveLocation インターフェイスの TransportTypeData プロパティを設定する必要はありません。 このプロパティを設定しない場合、WCF-NetTcp アダプタでは、次の表に記載されている WCF-NetTcp 受信場所の構成の既定値が使用されます。
次の表に、BizTalk エクスプローラのオブジェクト モデルで WCF-NetTcp 受信場所用に設定できる構成プロパティを示します。
プロパティ名 | Type | 説明 |
---|---|---|
ID | XML Blob 例: <identity> <userPrincipalName value="username@contoso.com" /> </Id> |
この受信場所が提供するサービスの ID を指定します。 Identity プロパティに指定できる値は、セキュリティ構成によって異なります。 これらの設定により、クライアントはこの受信場所を認証できます。 クライアントとサービスの間のハンドシェイク プロセスでは、Windows Communication Foundation (WCF) インフラストラクチャによって、この要素の値と予期されるサービスの ID が照合されます。 既定値は空の文字列です。 |
OpenTimeout | System.TimeSpan | チャネルを開く操作が完了するまでの間隔を示す期間値を指定します。 既定値:00:01:00 |
SendTimeout | System.TimeSpan | 送信操作が完了するまでの間隔を示す期間値を指定します。 要求 - 応答受信ポートを使用する場合、この値は、対話処理がすべて完了するまでの時間を指定します。これは、クライアントが大きなメッセージを返した場合にも適用されます。 既定値:00:01:00 |
CloseTimeout | System.TimeSpan | チャネルを閉じる操作が完了するまでの間隔を示す期間値を指定します。 既定値:00:01:00 |
MaxReceivedMessageSize | Integer | 有線ネットワーク上で受信できる、ヘッダーを含むメッセージの最大サイズをバイト単位で指定します。 メッセージのサイズは、各メッセージに割り当てられているメモリの量に制限されます。 このプロパティを使用して、サービス拒否 (DoS) 攻撃にさらされる危険性を制限できます。 WCF-NetTcp アダプターは、バッファー転送モードの NetTcpBinding クラスを利用してエンドポイントと通信します。 バッファーされたトランスポート モードの場合、 NetTcpBinding.MaxBufferSize プロパティは常にこのプロパティの値と等しくなります。 既定値:65536 |
EnableTransaction | Boolean | クライアントから流れてくるトランザクションを使用してメッセージをメッセージ ボックス データベースに送信するかどうかを指定します。 このプロパティが True に設定されている場合、クライアントは TransactionProtocol プロパティで指定されたトランザクション プロトコルを使用してメッセージを送信する必要があります。 クライアントがトランザクション スコープの外側のメッセージを送信した場合、この受信場所によって例外がクライアントに返され、メッセージは保留されません。 オプションは、一方向の受信場所に対してのみ使用できます。 クライアントが要求 - 応答の受信場所に対するトランザクション コンテキスト内でメッセージを送信した場合、例外がクライアントに返され、メッセージは保留されません。 既定値: False |
TransactionProtocol | 列挙型 - OleTransaction - WS-AtomicTransaction |
この受信場所で使用するトランザクション プロトコルを指定します。 既定値: OleTransaction |
LeaseTimeout | System.TimeSpan | アクティブなプールされた接続の最大有効期間を指定します。 指定した時間が経過すると、現在の要求が処理された後に接続が閉じます。 WCF-NetTcp アダプターは 、NetTcpBinding クラスを 利用してエンドポイントと通信します。 負荷分散シナリオで NetTcpBinding を使用する 場合は、既定のリース タイムアウトを減らすことを検討してください。 NetTcpBinding を使用するときの負荷分散の詳細については、「関連項目」の適切なトピックを参照してください。 既定値: 00:05:00 |
MaxConcurrentCalls | Integer | 単一のサービス インスタンスに対する同時呼び出しの数を指定します。 制限を超える呼び出しはキューに格納されます。 このプロパティの最小値は 1、最大値は Int32.MaxValue です。 既定値:200 |
SecurityMode | 列挙型 - なし - メッセージ - トランスポート - TransportWithMessageCredential SecurityMode プロパティのメンバー名の詳細については、「UI ガイダンスと開発者 API 名前空間リファレンス」の「WCF-NetTcp トランスポート プロパティ] ダイアログ ボックスの [セキュリティ モード] プロパティ、受信、セキュリティ タブ」を参照してください。 |
使用するセキュリティの種類を指定します。 既定値: トランスポート |
TransportClientCredentialType | 列挙型 - なし - Windows - 証明 書 TransportClientCredentialType プロパティのメンバー名の詳細については、「UI ガイダンスと開発者 API 名前空間リファレンス」の「WCF-NetTcp トランスポートプロパティ]ダイアログ ボックスのトランスポート クライアント資格情報の種類」タブを参照してください。 |
クライアント認証の実行時に使用する資格情報の種類を指定します。 既定値: Windows |
TransportProtectionLevel | 列挙型 - なし: 保護なし。 - 署名: メッセージは署名されています。 - EncryptAndSign: メッセージは暗号化され、署名されます。 |
TCP トランスポートのレベルでセキュリティを定義します。 メッセージに署名を付けることで、メッセージの転送中に第三者によって改ざんされるリスクが軽減されます。 暗号化によって、トランスポート中にデータ レベルのプライバシーが提供されます。 既定値: EncryptAndSign |
MessageClientCredentialType | 列挙型 - なし - Windows - 名 - 証明 書 MessageClientCredentialType プロパティのメンバー名の詳細については、UI ガイダンスと開発者 API 名前空間リファレンスの「WCF-NetTcp トランスポートのプロパティ] ダイアログ ボックスの [受信]、[セキュリティ] タブのメッセージ クライアント資格情報の種類プロパティ」を参照してください。 |
メッセージ ベースのセキュリティを使用してクライアント認証を実行するときに使用する、資格情報の種類を指定します。 既定値: Windows |
AlgorithmSuite | 列挙型 AlgorithmSuite プロパティのメンバー名の詳細については、「UI ガイダンスと開発者 API 名前空間リファレンス」の「WCF-NetTcp トランスポート プロパティ] ダイアログ ボックスのアルゴリズム スイート プロパティ、受信、セキュリティ タブ」を参照してください。 |
メッセージの暗号化とキー ラップのアルゴリズムを指定します。 これらのアルゴリズムは、セキュリティ ポリシー言語 (WS-SecurityPolicy) 仕様で指定されたアルゴリズムにマップされます。 既定値: Basic256 |
ServiceCertificate | String | クライアントがサービスの認証に使用する、この受信場所に対する X.509 証明書の拇印を指定します。 このプロパティに使用する証明書は、現在のユーザーの場所にある My ストアにインストールする必要があります。 メモ: この受信場所をホストしている受信ハンドラーのユーザー アカウントの 現在 のユーザーの場所にサービス証明書をインストールする必要があります。 既定値は空の文字列です。 |
UseSSO | Boolean | エンタープライズ シングル サインオン (SSO) を使用して SSO チケットを発行するためにクライアントの資格情報を取得するかどうかを指定します。 SSO をサポートするセキュリティ構成の詳細については、UI ガイダンスと開発者 API 名前空間リファレンスの「WCF-NetTcp トランスポートのプロパティ] ダイアログ ボックスの [受信]、[セキュリティ] タブの「WCF-NetTcp 受信アダプターのエンタープライズ シングル Sign-On のサポート」セクションを参照してください。 |
InboundBodyLocation | 列挙型 - UseBodyElement - 受信メッセージの SOAP Body 要素のコンテンツを使用して、BizTalk メッセージ本文パーツを作成します。 Body 要素に複数の子要素がある場合、最初の要素のみが BizTalk メッセージ本文パーツになります。 - UseEnvelope - 受信メッセージの SOAP エンベロープ 全体から BizTalk メッセージ本文部分を作成します。 - UseBodyPath - InboundBodyPathExpression プロパティの本文パス式を使用して、BizTalk メッセージ本文パーツを作成します。 本文パス式は、受信メッセージの SOAP Body 要素の直接の子要素に対して評価されます。 このプロパティは、送信請求 - 応答のポートに対してのみ有効です。 InboundBodyLocation プロパティの使用方法の詳細については、「WCF アダプターのメッセージ本文の指定」を参照してください。 |
受信 WCF メッセージの SOAP Body 要素のデータ選択を指定します。 既定値: UseBodyElement |
InboundBodyPathExpression | String InboundBodyPathExpression プロパティの使用方法の詳細については、「WCF Adapters プロパティ のスキーマとプロパティ」を参照してください。 |
BizTalk メッセージのボディ部を作成するために使用する受信メッセージの特定の部分を示すボディ パス式を指定します。 この本文パス式は、受信メッセージの SOAP 本文 ノードの直接の子要素に対して評価されます。 このボディ パス式で複数のノードが返される場合は、最初のノードのみが BizTalk メッセージのボディ部に対して選択されます。 このプロパティは、 InboundBodyLocation プロパティが UseBodyPath に設定されている場合に必要です。 既定値は空の文字列です。 |
InboundNodeEncoding | 列挙型 - Base64 - Base64 エンコード。 - 16 進数 - 16 進エンコード。 - String - テキスト エンコード - UTF-8。 - XML - WCF アダプターは、 InboundBodyPathExpression の本文パス式によって選択されたノードの外部 XML を使用して BizTalk メッセージ本文を作成します。 |
受信アダプター WCF-NetTcp が InboundBodyPathExpression で指定した本文パス式で識別されるノードをデコードするために使用するエンコードの種類を指定します。 このプロパティは、 InboundBodyLocation プロパティが UseBodyPath に設定されている場合に必要です。 既定値: XML |
OutboundBodyLocation | 列挙型 - UseBodyElement - BizTalk メッセージ本文パーツを使用して、送信応答メッセージの SOAP Body 要素のコンテンツを作成します。 - UseTemplate - OutboundXMLTemplate プロパティで指定されたテンプレートを使用して、送信応答メッセージの SOAP Body 要素のコンテンツを作成します。 OutboundBodyLocation プロパティの使用方法の詳細については、「WCF アダプターのメッセージ本文の指定」を参照してください。 |
送信 WCF メッセージの SOAP Body 要素のデータ選択を指定します。 このプロパティは、要求 - 応答の受信場所に対してのみ有効です。 既定値: UseBodyElement |
OutboundXMLTemplate | String OutboundXMLTemplate プロパティの使用方法の詳細については、「WCF アダプターのメッセージ本文の指定」を参照してください。 |
送信応答メッセージの SOAP Body 要素のコンテンツに XML 形式のテンプレートを指定します。 OutboundBodyLocation プロパティが UseTemplate に設定されている場合は、このプロパティが必要です。 このプロパティは、要求 - 応答の受信場所に対してのみ有効です。 既定値は空の文字列です。 |
SuspendMessageOnFailure | Boolean | 受信パイプラインまたはルーティングの障害によって受信処理に失敗した要求メッセージを保留するかどうかを指定します。 既定値: True |
IncludeExceptionDetailInFaults | Boolean | デバッグの目的でクライアントに返される SOAP エラーの詳細にマネージド例外情報を含めるかどうかを指定します。 既定値: False |
BizTalk 管理コンソールを使用して WCF-NetTcp 受信場所を構成する
WCF-NetTcp 受信場所のアダプタ変数は、BizTalk 管理コンソールで設定できます。 プロパティが受信場所に設定されていない場合は、BizTalk 管理コンソールで設定された既定の受信ハンドラーの値が使用されます。
Note
次の手順を実行する前に、受信ポートを追加する必要があります。 詳細については、「 受信ポートを作成する方法」を参照してください。
WCF-NetTcp 受信場所の変数を構成する
BizTalk 管理コンソールで [ BizTalk Server 2009 管理]、[ BizTalk グループ]、[ アプリケーション] の順に展開し、受信場所を作成するアプリケーションを展開します。
BizTalk 管理コンソールの左側のウィンドウで、[ 受信ポート ] ノードをクリックします。 次に右ウィンドウで、既存の受信場所に関連付けられているか、新しい受信場所に関連付ける受信ポートを右クリックし、[ プロパティ] をクリックします。
[ 受信ポートのプロパティ ] ダイアログ ボックスの左側のウィンドウで [ 受信場所] を選択し、右側のウィンドウで既存の受信場所をダブルクリックするか、[ 新規] をクリックして新しい受信場所を作成します。
[受信場所のプロパティ] ダイアログ ボックスの [種類] の横にある [トランスポート] セクションで、ドロップダウン リストから [WCF-NetTcp] を選択し、[構成] をクリックします。
[ WCF-NetTcp トランスポートのプロパティ ] ダイアログ ボックスの [ 全般 ] タブで、WCF-NetTcp 受信場所のエンドポイント アドレスとサービス ID を構成します。 [WCF-NetTcp トランスポートのプロパティ] ダイアログ ボックスの [全般] タブの詳細については、UI ガイダンスと開発者 API 名前空間リファレンスの「WCF-NetTcp トランスポート プロパティ] ダイアログ ボックスの [受信]、[全般] タブ」を参照してください。
[ WCF-NetTcp トランスポートのプロパティ ] ダイアログ ボックスの [ バインド ] タブで、タイムアウトとトランザクションのプロパティを構成します。 [WCF-NetTcp トランスポートのプロパティ] ダイアログ ボックスの [バインド] タブの詳細については、「UI ガイダンスと開発者 API 名前空間リファレンス」の「WCF-NetTcp トランスポートのプロパティ] ダイアログ ボックスの [受信]、[バインド] タブ」を参照してください。
[ WCF-NetTcp トランスポートのプロパティ ] ダイアログ ボックスの [ セキュリティ ] タブで、WCF-NetTcp 受信場所のセキュリティ機能を定義します。 [WCF-NetTcp トランスポートのプロパティ] ダイアログ ボックスの [セキュリティ] タブの詳細については、UI ガイダンスと開発者 API 名前空間リファレンスの「WCF-NetTcp トランスポートのプロパティ] ダイアログ ボックスの [受信]、[セキュリティ] タブ」を参照してください。
[ WCF-NetTcp トランスポートのプロパティ ] ダイアログ ボックスの [ メッセージ ] タブで、SOAP Body 要素のデータ選択を指定します。 [WCF-NetTcp トランスポートのプロパティ] ダイアログ ボックスの [メッセージ] タブの詳細については、「UI ガイダンスと開発者 API 名前空間リファレンス」の「WCF-NetTcp トランスポートのプロパティ] ダイアログ ボックスの [受信]、[メッセージ] タブ」を参照してください。
プログラムで WCF-NetTcp 受信場所を構成する
次の形式を使用してプロパティを設定できます。
<CustomProps>
<InboundBodyPathExpression vt="8" />
<InboundBodyLocation vt="8">UseBodyElement</InboundBodyLocation>
<UseSSO vt="11">0</UseSSO>
<MessageClientCredentialType vt="8">Windows</MessageClientCredentialType>
<SendTimeout vt="8">00:01:00</SendTimeout>
<OutboundXmlTemplate vt="8"><bts-msg-body xmlns="http://www.microsoft.com/schemas/bts2007" encoding="xml"/></OutboundXmlTemplate>
<OpenTimeout vt="8">00:01:00</OpenTimeout>
<AlgorithmSuite vt="8">Basic256</AlgorithmSuite>
<SecurityMode vt="8">Message</SecurityMode>
<TransportClientCredentialType vt="8">Windows</TransportClientCredentialType>
<MaxReceivedMessageSize vt="3">2097152</MaxReceivedMessageSize>
<CloseTimeout vt="8">00:01:00</CloseTimeout>
<SuspendMessageOnFailure vt="11">0</SuspendMessageOnFailure>
<EnableTransaction vt="11">0</EnableTransaction>
<InboundNodeEncoding vt="8">Xml</InboundNodeEncoding>
<IncludeExceptionDetailInFaults vt="11">0</IncludeExceptionDetailInFaults>
<MaxConcurrentCalls vt="3">16</MaxConcurrentCalls>
<ServiceCertificate vt="8" />
<OutboundBodyLocation vt="8">UseBodyElement</OutboundBodyLocation>
</CustomProps>
次のコードは、WCF-NetTcp 受信場所の作成方法を示しています。
// Use BizTalk Explorer object model to create new WCF-NetTcp receive location
string server = System.Environment.MachineName;
string database = "BizTalkMgmtDb";
string connectionString = string.Format("Server={0};Database={1};Integrated Security=true", server, database);
string transportConfigData = @"<CustomProps>
<InboundBodyLocation vt=""8"">UseBodyElement</InboundBodyLocation>
<UseSSO vt=""11"">0</UseSSO>
<Identity vt=""8"">
<identity>
<userPrincipalName value=""username@contoso.com"" />
</identity>
</Identity>
</CustomProps>";
//requires project reference to \Program Files\Microsoft BizTalk Server 2009\Developer Tools\Microsoft.BizTalk.ExplorerOM.dll
BtsCatalogExplorer explorer = new Microsoft.BizTalk.ExplorerOM.BtsCatalogExplorer();
explorer.ConnectionString = connectionString;
// Add a new BizTalk application
Application application = explorer.AddNewApplication();
application.Name = "SampleBizTalkApplication";
// Save
explorer.SaveChanges();
// Add a new one-way receive port
IReceivePort receivePort = application.AddNewReceivePort(false);
receivePort.Name = "SampleReceivePort";
// Add a new one-way receive location
IReceiveLocation receiveLocation = receivePort.AddNewReceiveLocation();
receiveLocation.Name = "SampleReceiveLocation";
// Find a receive handler for WCF-NetTcp
int i = 0;
for(i=0; i < explorer.ReceiveHandlers.Count; ++i)
{
if("WCF-NetTcp" == explorer.ReceiveHandlers[i].TransportType.Name)
break;
}
receiveLocation.ReceiveHandler = explorer.ReceiveHandlers[i];
receiveLocation.Address = "net.tcp://mycomputer/samplepath";
receiveLocation.ReceivePipeline = explorer.Pipelines["Microsoft.BizTalk.DefaultPipelines.PassThruReceive"];
receiveLocation.TransportType = explorer.ProtocolTypes["WCF-NetTcp"];
receiveLocation.TransportTypeData = transportConfigData;
// Save
explorer.SaveChanges();
参照
WCF 受信アダプターのサービス メタデータの発行BizTalk ホストとホスト インスタンスの管理 WCFアダプターの証明書をインストールするサービス アカウントとパスワードを変更する方法 WCF アダプターのメッセージ本文を指定する負荷分散WCF-NetTcp アダプターの構成