Accesso a OperationContextAccessing OperationContext

Questo esempio viene illustrato come l'attività di messaggistica (Receive e Send) può essere utilizzato con un'attività di ambiti personalizzata per accedere Current e allegare o recuperare un'intestazione di messaggio personalizzata all'interno di un messaggio in ingresso o in uscita.This sample demonstrates how the messaging activities (Receive and Send) can be used with a custom scope activity to access Current and attach or retrieve a custom message header within an outgoing or incoming message.

DimostrazioneDemonstrates

Attività di messaggistica, ISendMessageCallback, IReceiveMessageCallback.Messaging Activities, ISendMessageCallback, IReceiveMessageCallback.

DiscussioneDiscussion

In questo esempio viene illustrato come usare punti di estensibilità (ISendMessageCallback) IReceiveMessageCallback) nelle attività di messaggistica per accedere a Current.This sample shows how to use extensibility points (ISendMessageCallback) IReceiveMessageCallback) in the messaging activities to access Current. I callback vengono registrati all'interno dell'esecuzione del flusso di lavoro come un'implementazione di IExecutionProperty raccolta dalle attività della messaggistica durante l'esecuzione.The callbacks are registered within the workflow runtime as an implementation of IExecutionProperty that is picked up by the messaging activities upon execution. Qualsiasi attività di messaggistica nello stesso ambito di tale implementazione IExecutionProperty risulta interessata.Any messaging activity in the same scope as that IExecutionProperty implementation is affected. In particolare, questo esempio usa un'attività di ambiti personalizzata per applicare il comportamento di callback.In particular, this sample uses a custom scope activity to enforce the callback behavior. ISendMessageCallback viene usato nel flusso di lavoro client per includere l'oggetto Id del flusso di lavoro come MessageHeader in uscita.The ISendMessageCallback is used in the client workflow to include the workflow’s Id as an outgoing MessageHeader. Questa intestazione viene quindi scelta nel servizio usando IReceiveMessageCallback e il valore dell'intestazione viene stampato nella console.This header is then picked up in the service using the IReceiveMessageCallback and the value of the header is printed out to the console.

Per impostare, compilare ed eseguire l'esempioTo set up, build, and run the sample

  1. In questo esempio viene esposto un servizio flusso di lavoro tramite endpoint HTTP.This sample exposes a workflow service using HTTP endpoints. Eseguire questa procedura elenchi ACL di URL di esempio, appropriata deve essere aggiunto (vedere Configuring HTTP and HTTPS per informazioni dettagliate), eseguendo Visual Studio come amministratore o eseguendo il comando seguente in un prompt dei comandi con privilegi elevati per aggiungere gli ACL appropriati.To run this sample, proper URL ACLs must be added (see Configuring HTTP and HTTPS for details), either by running Visual Studio as Administrator or by executing the following command at an elevated prompt to add the appropriate ACLs. Assicurarsi che vengono sostituiti il dominio e il nome utente.Ensure that your Domain and Username are substituted.

    netsh http add urlacl url=http://+:8000/ user=%DOMAIN%\%UserName%  
    
  2. Una volta aggiunti gli elenchi ACL URL, usare i passaggi seguenti.Once the URL ACLs are added, use the following steps.

    1. Compilare la soluzione.Build the solution.

    2. Impostare più progetti di avvio facendo clic sulla soluzione e selezionando Imposta progetti di avvio.Set multiple start-up projects by right-clicking the solution and selecting Set Startup Projects.

    3. Aggiungere servizio e Client (in tale ordine) come più progetti di avvio.Add Service and Client (in that order) as multiple start-up projects.

    4. Eseguire l'applicazione.Run the application. Nella console client viene visualizzato un flusso di lavoro che viene eseguito due volte e nella finestra Servizio è visualizzato l'ID istanza di tali flussi di lavoro.The client console shows a workflow running twice and the Service window shows the instance ID of those workflows.

Importante

È possibile che gli esempi siano già installati nel computer.The samples may already be installed on your machine. Verificare la directory seguente (impostazione predefinita) prima di continuare.Check for the following (default) directory before continuing.

<InstallDrive>:\WF_WCF_Samples

Se questa directory non esiste, andare al Windows Communication Foundation (WCF) e gli esempi di Windows Workflow Foundation (WF) per .NET Framework 4 per scaricare tutti i Windows Communication Foundation (WCF) e WFWF esempi.If this directory does not exist, go to Windows Communication Foundation (WCF) and Windows Workflow Foundation (WF) Samples for .NET Framework 4 to download all Windows Communication Foundation (WCF) and WFWF samples. Questo esempio si trova nella directory seguente.This sample is located in the following directory.

<InstallDrive>:\WF_WCF_Samples\WF\Scenario\Services\Accessing Operation Context