Compartir a través de


Obtener acceso a OperationContext

El ejemplo AccessingOperationContext muestra cómo se pueden utilizar las actividades de mensajería (Receive y Send) con una actividad de ámbito personalizado para tener acceso a Current y adjuntar o recuperar un encabezado de mensaje personalizado en un mensaje saliente o entrante.

Muestra

Actividades de mensajería, ISendMessageCallback, IReceiveMessageCallback.

Debate

En este ejemplo se muestra cómo utilizar puntos de extensibilidad (ISendMessageCallback y IReceiveMessageCallback) en las actividades de mensajería para tener acceso a Current. Las devoluciones de llamada se registran dentro del tiempo de ejecución del flujo de trabajo como una implementación de IExecutionProperty que utilizan las actividades de mensajería en la ejecución. Se ven afectadas todas las actividades de mensajería incluidas en el mismo ámbito que la implementación de IExecutionProperty. Concretamente, en este ejemplo se utiliza una actividad de ámbito personalizada para exigir el comportamiento de devolución de llamada. ISendMessageCallback se usa en el flujo de trabajo del cliente para incluir la propiedad Id del flujo de trabajo como una clase MessageHeader de salida. A continuación, este encabezado se utiliza en el servicio mediante la interfaz IReceiveMessageCallback, y su valor se imprime en la consola.

Configuración, compilación y ejecución del ejemplo

  1. En este ejemplo se expone un servicio del flujo de trabajo mediante puntos de conexión HTTP. Para realizar este ejemplo, se deben agregar listas ACL de direcciones URL adecuadas (consulte Configuración de HTTP y HTTPS para obtener más información) ejecutando Visual Studio como administrador o el siguiente comando en una ventana de símbolo del sistema con privilegios elevados para agregar las listas ACL correspondientes. Asegúrese de que su dominio y su nombre de usuario se sustituyen.

    netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%
    
  2. Una vez agregadas las listas de control de acceso de dirección URL, siga estos pasos.

    1. Compile la solución.

    2. Establezca varios proyectos de inicio. Para ello, haga clic con el botón derecho en la solución y seleccione Establecer proyectos de inicio.

    3. Agregue Servicio y Cliente (en ese orden) como varios proyectos de inicio.

    4. Ejecute la aplicación. La consola del cliente muestra un flujo de trabajo que se ejecuta dos veces y la ventana Service muestra el identificador de instancia de estos flujos de trabajo.