AccessingOperationContext サンプルでは、メッセージング アクティビティ (ReceiveとSend) をカスタム スコープ アクティビティと共に使用して、Currentにアクセスし、送信メッセージまたは受信メッセージ内でカスタム メッセージ ヘッダーをアタッチまたは取得する方法を示します。
対象
メッセージング アクティビティ、 ISendMessageCallback、 IReceiveMessageCallback。
議論
このサンプルでは、メッセージング アクティビティで拡張ポイント (ISendMessageCallback) IReceiveMessageCallback) を使用して、 Currentにアクセスする方法を示します。 コールバックは、実行時にメッセージング アクティビティによって取得される IExecutionProperty の実装としてワークフロー ランタイム内に登録されます。 その IExecutionProperty 実装と同じスコープ内のすべてのメッセージング アクティビティが影響を受ける。 特に、このサンプルでは、カスタム スコープ アクティビティを使用してコールバック動作を適用します。 ISendMessageCallbackは、ワークフローのIdを送信MessageHeaderとして含めるために、クライアント ワークフローで使用されます。 このヘッダーは、 IReceiveMessageCallback を使用してサービスで取得され、ヘッダーの値がコンソールに出力されます。
サンプルを設定、ビルド、実行する
このサンプルでは、HTTP エンドポイントを使用してワークフロー サービスを公開します。 このサンプルを実行するには、Visual Studio を管理者として実行するか、管理者特権で次のコマンドを実行して適切な ACL を追加することで、適切な URL ACL を追加する必要があります (詳細については 、HTTP と HTTPS の構成 を参照してください)。 ドメインとユーザー名が置き換えられることを確認します。
netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%
URL ACL が追加されたら、次の手順を使用します。
ソリューションをビルドします。
ソリューションを右クリックし、[スタートアップ プロジェクトの設定] を選択して、複数の スタートアップ プロジェクトを設定します。
サービスとクライアントを (その順序で) 複数のスタートアップ プロジェクトとして追加します。
アプリケーションを実行します。 クライアント コンソールには 2 回実行されているワークフローが表示され、[サービス] ウィンドウにはそれらのワークフローのインスタンス ID が表示されます。
.NET