다음을 통해 공유


OperationContext 접근

AccessingOperationContext 샘플은 메시지 활동(ReceiveSend)을 사용자 지정 범위 활동과 함께 사용하여 나가는 메시지 또는 들어오는 메시지 내에서 사용자 지정 메시지 헤더에 액세스하고, 이를 연결하거나 검색하는 방법을 보여 줍니다.

입증합니다

메시징 활동, ISendMessageCallback, IReceiveMessageCallback.

토론

이 샘플에서는 메시징 활동에서 확장성 지점(ISendMessageCallback) IReceiveMessageCallback을 사용하여 액세스 Current하는 방법을 보여 줍니다. 메시징 활동이 실행될 때 선택되는 IExecutionProperty의 구현으로, 콜백은 워크플로 런타임 내에 등록됩니다. 해당 IExecutionProperty 구현과 동일한 범위의 모든 메시징 활동이 영향을 받습니다. 특히 이 샘플에서는 사용자 지정 범위 작업을 사용하여 콜백 동작을 적용합니다. 클라이언트 워크플로에서 ISendMessageCallback는 워크플로의 Id을 나가는 MessageHeader로 포함하는 데 사용됩니다. 그런 다음 서비스에서 이 헤더를 IReceiveMessageCallback로 선택하여 헤더의 값을 콘솔에 출력합니다.

샘플 설정, 빌드 및 실행

  1. 이 샘플에서는 HTTP 엔드포인트를 사용하여 워크플로 서비스를 노출합니다. 이 샘플을 실행하려면 관리자 권한으로 Visual Studio를 실행하거나 관리자 권한 프롬프트에서 다음 명령을 실행하여 적절한 ACL을 추가하여 적절한 URL ACL을 추가해야 합니다(자세한 내용은 HTTP 및 HTTPS 구성 참조). 도메인 및 사용자 이름이 대체되었는지 확인합니다.

    netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%
    
  2. URL ACL이 추가되면 다음 단계를 사용합니다.

    1. 솔루션을 빌드합니다.

    2. 솔루션을 마우스 오른쪽 단추로 클릭하고 시작 프로젝트 설정을 선택하여 여러 시작 프로젝트를 설정합니다.

    3. 서비스클라이언트를 여러 시작 프로젝트로 추가합니다(해당 순서대로).

    4. 애플리케이션을 실행합니다. 클라이언트 콘솔에 두 번 실행되는 워크플로가 표시되고 서비스 창에 해당 워크플로의 인스턴스 ID가 표시됩니다.