Udostępnij za pośrednictwem


OperationContextScope Konstruktory

Definicja

Inicjuje nowe wystąpienie klasy OperationContextScope.

Przeciążenia

OperationContextScope(IContextChannel)

Inicjuje OperationContextScope nowe wystąpienie klasy, która używa określonego IContextChannel elementu do utworzenia nowego OperationContext dla zakresu.

OperationContextScope(OperationContext)

Inicjuje OperationContextScope nowe wystąpienie klasy w celu utworzenia zakresu dla określonego OperationContext obiektu.

OperationContextScope(IContextChannel)

Inicjuje OperationContextScope nowe wystąpienie klasy, która używa określonego IContextChannel elementu do utworzenia nowego OperationContext dla zakresu.

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)

Parametry

channel
IContextChannel

Kanał do użycia podczas tworzenia zakresu dla nowego OperationContextelementu .

Przykłady

W poniższym przykładzie pokazano, jak użyć elementu OperationContextScope , aby utworzyć nowy kontekst w aplikacji klienckiej w celu dodania niestandardowego nagłówka do komunikatu wychodzącego.

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

Uwagi

Użyj konstruktoraOperationContextScope, aby utworzyć nowy OperationContext kanał klienta, który może służyć do dodawania lub modyfikowania nagłówków komunikatów wychodzących, odczytywania nagłówków komunikatów przychodzących lub uzyskiwania dostępu do innych właściwości czasu wykonywania .OperationContext

Nagłówki dodane do OperationContext.IncomingMessageHeaders właściwości nowo utworzonego OperationContext mają zastosowanie tylko do kanału przekazanego do konstruktora OperationContextScope . Jeśli użytkownik utworzy nowy kanał w swoim zakresie, nagłówki nie są stosowane do komunikatów wysyłanych w nowym kanale.

Dotyczy

OperationContextScope(OperationContext)

Inicjuje OperationContextScope nowe wystąpienie klasy w celu utworzenia zakresu dla określonego OperationContext obiektu.

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)

Parametry

context
OperationContext

OperationContext Aktywny w utworzonym zakresie.

Uwagi

Użyj konstruktora OperationContextScope , aby utworzyć blok kodu, w którym określony OperationContextScope obiekt jest bieżącym zakresem.

Dotyczy