다음을 통해 공유


OperationContext 액세스

AccessingOperationContext 샘플에서는 메시징 작업(ReceiveSend)을 사용자 지정 범위 작업에 사용하여 Current에 액세스하고 보내거나 들어오는 메시지 내의 사용자 지정 메시지 헤더를 검색하거나 첨부하는 방법을 보여 줍니다.

시연

메시징 활동, ISendMessageCallback, IReceiveMessageCallback

토론(Discussion)

이 샘플에서는 메시징 활동에 확장성 지점(ISendMessageCallbackIReceiveMessageCallback)을 사용하여 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가 표시됩니다.