Compartilhar via


OperationContextScope Construtores

Definição

Inicializa uma nova instância da classe OperationContextScope.

Sobrecargas

OperationContextScope(IContextChannel)

Inicializa uma nova instância da classe OperationContextScope que usa o IContextChannel especificado para criar um novo OperationContext para o escopo.

OperationContextScope(OperationContext)

Inicializa uma nova instância da classe OperationContextScope para criar um escopo para o objeto OperationContext especificado.

OperationContextScope(IContextChannel)

Inicializa uma nova instância da classe OperationContextScope que usa o IContextChannel especificado para criar um novo OperationContext para o escopo.

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)

Parâmetros

channel
IContextChannel

O canal a ser usado ao criar o escopo de um novo OperationContext.

Exemplos

O exemplo a seguir mostra como usar o OperationContextScope para criar um novo contexto em um aplicativo cliente para adicionar um cabeçalho personalizado à mensagem de saída.

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

Comentários

Use o OperationContextScope construtor para criar um novo OperationContext canal cliente que possa ser usado para adicionar ou modificar cabeçalhos de mensagem de saída, ler cabeçalhos de mensagem de entrada ou acessar outras propriedades de tempo de execução do OperationContext.

Os cabeçalhos adicionados à OperationContext.IncomingMessageHeaders propriedade do recém-criado OperationContext aplicam-se somente ao canal que foi passado para o OperationContextScope construtor. Se o usuário criar um novo canal dentro de seu escopo, os cabeçalhos não serão aplicados às mensagens enviadas no novo canal.

Aplica-se a

OperationContextScope(OperationContext)

Inicializa uma nova instância da classe OperationContextScope para criar um escopo para o objeto OperationContext especificado.

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)

Parâmetros

context
OperationContext

O OperationContext ativo no escopo criado.

Comentários

Use o OperationContextScope construtor para criar um bloco de código no qual o objeto especificado OperationContextScope é o escopo atual.

Aplica-se a