OperationContextScope Конструкторы

Определение

Инициализирует новый экземпляр класса OperationContextScope.

Перегрузки

OperationContextScope(IContextChannel)

Инициализирует новый экземпляр класса OperationContextScope, использующего указанный канал IContextChannel для создания нового контекста OperationContext для области действия.

OperationContextScope(OperationContext)

Инициализирует новый экземпляр класса OperationContextScope для создания области для указанного объекта OperationContext.

OperationContextScope(IContextChannel)

Инициализирует новый экземпляр класса OperationContextScope, использующего указанный канал IContextChannel для создания нового контекста OperationContext для области действия.

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)

Параметры

channel
IContextChannel

Канал, который следует использовать при создании области для нового контекста OperationContext.

Примеры

В следующем примере показано, как использовать область контекста OperationContextScope для создания нового контекста в клиентском приложении для добавления пользовательского заголовка к исходящему сообщению.

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

Комментарии

Конструктор OperationContextScope следует использовать для создания нового контекста OperationContext для клиентского канала, который можно будет использовать для добавления или изменения заголовков исходящих сообщений, чтения заголовков входящих сообщений или доступа к другим свойствам среды выполнения контекста OperationContext.

Заголовки, добавляемые в свойство OperationContext.IncomingMessageHeaders нового контекста OperationContext, будут применяться только на канале, переданном в конструктор OperationContextScope. Если пользователь создаст новый канал в области, заголовки не будут применяться для сообщений, отправляемых по новому каналу.

Применяется к

OperationContextScope(OperationContext)

Инициализирует новый экземпляр класса OperationContextScope для создания области для указанного объекта OperationContext.

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)

Параметры

context
OperationContext

Активный контекст OperationContext в созданной области.

Комментарии

Конструктор OperationContextScope служит для создания блока кода, для которого указанный объект OperationContextScope является текущей областью действия.

Применяется к