Compartir vía


Acceso a OperationContext

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

Demostraciones

Actividades de mensajería, ISendMessageCallback, IReceiveMessageCallback.

Discusión

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. Cualquier actividad de mensajería en el mismo ámbito que esa IExecutionProperty implementación se ve afectada. 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 de 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 reemplazar su dominio y nombre de usuario.

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

    1. Compile la solución.

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

    3. Agregue Servicio y Cliente como varios proyectos de inicio simultáneo en ese orden.

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