Share via


OperationContextScope Constructeurs

Définition

Initialise une nouvelle instance de la classe OperationContextScope.

Surcharges

OperationContextScope(IContextChannel)

Initialise une nouvelle instance de la classe OperationContextScope qui utilise le IContextChannel spécifié pour créer un OperationContext pour la portée.

OperationContextScope(OperationContext)

Initialise une nouvelle instance de la classe OperationContextScope pour créer une portée pour l'objet OperationContext spécifié.

OperationContextScope(IContextChannel)

Initialise une nouvelle instance de la classe OperationContextScope qui utilise le IContextChannel spécifié pour créer un OperationContext pour la portée.

public:
 OperationContextScope(System::ServiceModel::IContextChannel ^ channel);
public OperationContextScope (System.ServiceModel.IContextChannel channel);
new System.ServiceModel.OperationContextScope : System.ServiceModel.IContextChannel -> System.ServiceModel.OperationContextScope
Public Sub New (channel As IContextChannel)

Paramètres

channel
IContextChannel

Le canal à utiliser lors de la création de la portée pour un nouveau OperationContext.

Exemples

L'exemple suivant indique comment utiliser la OperationContextScope pour créer un contexte dans une application cliente afin d'ajouter un en-tête personnalisé au message sortant.

SampleServiceClient wcfClient = new SampleServiceClient(new InstanceContext(this));
try
{
  using (OperationContextScope scope = new OperationContextScope(wcfClient.InnerChannel))
  {
    MessageHeader header
      = MessageHeader.CreateHeader(
      "Service-Bound-CustomHeader",
      "http://Microsoft.WCF.Documentation",
      "Custom Happy Value."
      );
    OperationContext.Current.OutgoingMessageHeaders.Add(header);

    // Making calls.
    Console.WriteLine("Enter the greeting to send: ");
    string greeting = Console.ReadLine();

    //Console.ReadLine();
    header = MessageHeader.CreateHeader(
        "Service-Bound-OneWayHeader",
        "http://Microsoft.WCF.Documentation",
        "Different Happy Value."
      );
    OperationContext.Current.OutgoingMessageHeaders.Add(header);

    // One-way
    wcfClient.Push(greeting);
    this.wait.WaitOne();

    // Done with service.
    wcfClient.Close();
    Console.WriteLine("Done!");
    Console.ReadLine();
  }
}
catch (TimeoutException timeProblem)
{
  Console.WriteLine("The service operation timed out. " + timeProblem.Message);
  Console.ReadLine();
  wcfClient.Abort();
}
catch (CommunicationException commProblem)
{
  Console.WriteLine("There was a communication problem. " + commProblem.Message);
  Console.ReadLine();
  wcfClient.Abort();
}
Dim wcfClient As New SampleServiceClient(New InstanceContext(Me))
Try
  Using scope As New OperationContextScope(wcfClient.InnerChannel)
            Dim header As MessageHeader = MessageHeader.CreateHeader("Service-Bound-CustomHeader", _
                                "http://Microsoft.WCF.Documentation", "Custom Happy Value.")
    OperationContext.Current.OutgoingMessageHeaders.Add(header)

    ' Making calls.
    Console.WriteLine("Enter the greeting to send: ")
    Dim greeting As String = Console.ReadLine()

    'Console.ReadLine();
            header = MessageHeader.CreateHeader("Service-Bound-OneWayHeader", _
                                                "http://Microsoft.WCF.Documentation", "Different Happy Value.")
    OperationContext.Current.OutgoingMessageHeaders.Add(header)

    ' One-way
    wcfClient.Push(greeting)
    Me.wait.WaitOne()

    ' Done with service. 
    wcfClient.Close()
    Console.WriteLine("Done!")
    Console.ReadLine()
  End Using
Catch timeProblem As TimeoutException
  Console.WriteLine("The service operation timed out. " & timeProblem.Message)
  Console.ReadLine()
  wcfClient.Abort()
Catch commProblem As CommunicationException
  Console.WriteLine("There was a communication problem. " & commProblem.Message)
  Console.ReadLine()
  wcfClient.Abort()
End Try

Remarques

Utilisez le constructeur OperationContextScope pour créer un OperationContext pour un canal client qui peut être utilisé pour ajouter ou modifier des en-tête de message sortants, lire des en-têtes de messages entrants ou accéder à d'autres propriétés à l'exécution du OperationContext.

Les en-têtes ajoutés à la propriété OperationContext.IncomingMessageHeaders du nouveau OperationContext ne s'appliquent qu'au canal passé au constructeur OperationContextScope. Si l'utilisateur crée un canal dans sa portée, les en-têtes ne sont pas appliqués aux messages envoyés sur le nouveau canal.

S’applique à

OperationContextScope(OperationContext)

Initialise une nouvelle instance de la classe OperationContextScope pour créer une portée pour l'objet OperationContext spécifié.

public:
 OperationContextScope(System::ServiceModel::OperationContext ^ context);
public OperationContextScope (System.ServiceModel.OperationContext context);
new System.ServiceModel.OperationContextScope : System.ServiceModel.OperationContext -> System.ServiceModel.OperationContextScope
Public Sub New (context As OperationContext)

Paramètres

context
OperationContext

Le OperationContext actif dans la portée créée.

Remarques

Utilisez le constructeur OperationContextScope pour créer un bloc de code dans lequel l'objet OperationContextScope spécifié est la portée actuelle.

S’applique à