Condividi tramite


OperationContextScope Costruttori

Definizione

Inizializza una nuova istanza della classe OperationContextScope.

Overload

OperationContextScope(IContextChannel)

Consente di inizializzare una nuova istanza della classe OperationContextScope che utilizza l'interfaccia IContextChannel specificata per creare un nuovo contesto OperationContext dell'ambito.

OperationContextScope(OperationContext)

Consente di inizializzare una nuova istanza della classe OperationContextScope per creare un ambito dell'oggetto OperationContext specificato.

OperationContextScope(IContextChannel)

Consente di inizializzare una nuova istanza della classe OperationContextScope che utilizza l'interfaccia IContextChannel specificata per creare un nuovo contesto OperationContext dell'ambito.

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)

Parametri

channel
IContextChannel

Canale da utilizzare quando si crea l'ambito di un nuovo contesto OperationContext.

Esempio

Nell'esempio seguente viene illustrato come utilizzare OperationContextScope per creare un nuovo contesto in un'applicazione client per aggiungere un'intestazione personalizzata al messaggio in uscita.

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

Commenti

Utilizzare il costruttore OperationContextScope per creare un nuovo contesto OperationContext per un canale client che può essere utilizzato per aggiungere o modificare intestazioni di messaggi in uscita, per leggere intestazioni di messaggi in ingresso o per accedere ad altre proprietà di runtime del contesto OperationContext.

Le intestazioni aggiunte alla proprietà OperationContext.IncomingMessageHeaders del contesto OperationContext appena creato vengono applicate solo al canale passato al costruttore OperationContextScope. Se l'utente crea un nuovo canale all'interno del suo ambito, le intestazioni non vengono applicate ai messaggi inviati sul nuovo canale.

Si applica a

OperationContextScope(OperationContext)

Consente di inizializzare una nuova istanza della classe OperationContextScope per creare un ambito dell'oggetto OperationContext specificato.

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)

Parametri

context
OperationContext

Contesto OperationContext attivo nell'ambito creato.

Commenti

Utilizzare il costruttore OperationContextScope per creare un blocco di codice in cui l'oggetto OperationContextScope specificato è l'ambito corrente.

Si applica a