CallbackBehaviorAttribute CallbackBehaviorAttribute CallbackBehaviorAttribute CallbackBehaviorAttribute Class

Определение

Настраивает реализацию службы обратного вызова в клиентском приложении.Configures a callback service implementation in a client application.

public ref class CallbackBehaviorAttribute sealed : Attribute, System::ServiceModel::Description::IEndpointBehavior
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class CallbackBehaviorAttribute : Attribute, System.ServiceModel.Description.IEndpointBehavior
type CallbackBehaviorAttribute = class
    inherit Attribute
    interface IEndpointBehavior
Public NotInheritable Class CallbackBehaviorAttribute
Inherits Attribute
Implements IEndpointBehavior
Наследование
CallbackBehaviorAttributeCallbackBehaviorAttributeCallbackBehaviorAttributeCallbackBehaviorAttribute
Атрибуты
Реализации

Примеры

В следующем примере кода показан CallbackBehaviorAttribute для объекта обратного вызова, в котором используются: объект SynchronizationContext для определения потока, в который требуется маршалировать; свойство ValidateMustUnderstand для принудительной проверки сообщений; свойство IncludeExceptionDetailInFaults для возврата исключений в службу в виде объектов FaultException, используемых для целей отладки.The following code example shows a CallbackBehaviorAttribute on a callback object that uses the SynchronizationContext object to determine which thread to marshal to, the ValidateMustUnderstand property to enforce message validation, and the IncludeExceptionDetailInFaults property to return exceptions as FaultException objects to the service for debugging purposes.

using System;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Threading;

namespace Microsoft.WCF.Documentation
{
  [CallbackBehaviorAttribute(
   IncludeExceptionDetailInFaults= true, 
    UseSynchronizationContext=true,
    ValidateMustUnderstand=true
  )]
  public class Client : SampleDuplexHelloCallback
  {
    AutoResetEvent waitHandle;

    public Client()
    {
      waitHandle = new AutoResetEvent(false);
    }

    public void Run()
    {
      // Picks up configuration from the configuration file.
      SampleDuplexHelloClient wcfClient
        = new SampleDuplexHelloClient(new InstanceContext(this), "WSDualHttpBinding_SampleDuplexHello");
      try
      {
        Console.ForegroundColor = ConsoleColor.White;
        Console.WriteLine("Enter a greeting to send and press ENTER: ");
        Console.Write(">>> ");
        Console.ForegroundColor = ConsoleColor.Green;
        string greeting = Console.ReadLine();
        Console.ForegroundColor = ConsoleColor.White;
        Console.WriteLine("Called service with: \r\n\t" + greeting);
        wcfClient.Hello(greeting);
        Console.WriteLine("Execution passes service call and moves to the WaitHandle.");
        this.waitHandle.WaitOne();
        Console.ForegroundColor = ConsoleColor.Blue;
        Console.WriteLine("Set was called.");
        Console.Write("Press ");
        Console.ForegroundColor = ConsoleColor.Red;
        Console.Write("ENTER");
        Console.ForegroundColor = ConsoleColor.Blue;
        Console.Write(" to exit...");
        Console.ReadLine();
      }
      catch (TimeoutException timeProblem)
      {
        Console.WriteLine("The service operation timed out. " + timeProblem.Message);
        Console.ReadLine();
      }
      catch (CommunicationException commProblem)
      {
        Console.WriteLine("There was a communication problem. " + commProblem.Message);
        Console.ReadLine();
      }
    }
    public static void Main()
    {
      Client client = new Client();
      client.Run();
    }

    public void Reply(string response)
    {
      Console.WriteLine("Received output.");
      Console.WriteLine("\r\n\t" + response);
      this.waitHandle.Set();
    }
  }
}

Imports Microsoft.VisualBasic
Imports System
Imports System.ServiceModel
Imports System.ServiceModel.Channels
Imports System.Threading

Namespace Microsoft.WCF.Documentation
  <CallbackBehaviorAttribute(IncludeExceptionDetailInFaults:= True, UseSynchronizationContext:=True, ValidateMustUnderstand:=True)> _
  Public Class Client
	  Implements SampleDuplexHelloCallback
	Private waitHandle As AutoResetEvent

	Public Sub New()
	  waitHandle = New AutoResetEvent(False)
	End Sub

	Public Sub Run()
	  ' Picks up configuration from the configuration file.
	  Dim wcfClient As New SampleDuplexHelloClient(New InstanceContext(Me), "WSDualHttpBinding_SampleDuplexHello")
	  Try
		Console.ForegroundColor = ConsoleColor.White
		Console.WriteLine("Enter a greeting to send and press ENTER: ")
		Console.Write(">>> ")
		Console.ForegroundColor = ConsoleColor.Green
		Dim greeting As String = Console.ReadLine()
		Console.ForegroundColor = ConsoleColor.White
		Console.WriteLine("Called service with: " & Constants.vbCrLf & Constants.vbTab & greeting)
		wcfClient.Hello(greeting)
		Console.WriteLine("Execution passes service call and moves to the WaitHandle.")
		Me.waitHandle.WaitOne()
		Console.ForegroundColor = ConsoleColor.Blue
		Console.WriteLine("Set was called.")
		Console.Write("Press ")
		Console.ForegroundColor = ConsoleColor.Red
		Console.Write("ENTER")
		Console.ForegroundColor = ConsoleColor.Blue
		Console.Write(" to exit...")
		Console.ReadLine()
	  Catch timeProblem As TimeoutException
		Console.WriteLine("The service operation timed out. " & timeProblem.Message)
		Console.ReadLine()
	  Catch commProblem As CommunicationException
		Console.WriteLine("There was a communication problem. " & commProblem.Message)
		Console.ReadLine()
	  End Try
	End Sub
	Public Shared Sub Main()
	  Dim client As New Client()
	  client.Run()
	End Sub

	Public Sub Reply(ByVal response As String) Implements SampleDuplexHelloCallback.Reply
	  Console.WriteLine("Received output.")
	  Console.WriteLine(Constants.vbCrLf & Constants.vbTab & response)
	  Me.waitHandle.Set()
	End Sub
  End Class
End Namespace

Комментарии

Атрибут CallbackBehaviorAttribute используется для настройки или расширения поведения выполнения при реализации контракта обратного вызова в клиентском приложении.Use the CallbackBehaviorAttribute attribute to configure or extend the execution behavior of a callback contract implementation in a client application. Этот атрибут выполняет для класса обратного вызова ту же функцию, что и атрибут ServiceBehaviorAttribute, без учета поведения экземпляров и параметров транзакции.This attribute performs the same function for the callback class as the ServiceBehaviorAttribute attribute with the exception of instancing behavior and transaction settings.

Атрибут CallbackBehaviorAttribute необходимо применять к классу, в котором реализован контракт обратного вызова.The CallbackBehaviorAttribute must be applied to the class that implements the callback contract. Если класс применяется к реализации недуплексного контракта, во время выполнения создается исключение InvalidOperationException.If applied to a non-duplex contract implementation an InvalidOperationException exception is thrown at runtime.

Примечание

Для реализации операции обратного вызова также можно использовать атрибут OperationBehaviorAttribute.You can also use the OperationBehaviorAttribute attribute for the callback operation implementations. Если атрибут OperationBehaviorAttribute используется для операции обратного вызова, свойство ReleaseInstanceMode должно иметь значение None, или во время выполнения выводится исключение InvalidOperationException.However, if OperationBehaviorAttribute is used on a callback operation, the ReleaseInstanceMode property must be None or an InvalidOperationException exception is thrown at runtime.

Доступны следующие свойства.The following properties are available:

  • Свойство AutomaticSessionShutdown автоматически закрывает сеанс после закрытия канала и завершения обработки остающихся сообщений обратным вызовом.The AutomaticSessionShutdown property automatically closes the session when the channel is closed and the callback has finished processing any remaining messages.

  • Свойство ConcurrencyMode управляет внутренней моделью потоков, обеспечивая поддержку многопоточных объектов обратного вызова или объектов с повторными входящими вызовами.The ConcurrencyMode property controls the internal threading model, enabling support for reentrant or multithreaded callback objects.

  • Свойство IgnoreExtensionDataObject позволяет среде выполнения пропускать дополнительную информацию о сериализации, которая не требуется для обработки сообщения.The IgnoreExtensionDataObject property enables the runtime to ignore extra serialization information that is not required to process the message.

  • Свойство IncludeExceptionDetailInFaults указывает на то, выводятся ли необработанные исключения службы для целей отладки как ошибки протокола SOAP.The IncludeExceptionDetailInFaults property specifies whether unhandled exceptions in a service are returned to the service as SOAP faults for debugging purposes.

  • Свойство MaxItemsInObjectGraph ограничивает количество сериализуемых элементов в графе объекта.The MaxItemsInObjectGraph property limits on the number of items in an object graph that are serialized.

  • Свойство TransactionIsolationLevel задает уровень изоляции транзакций, поддерживаемый контрактом.The TransactionIsolationLevel property specifies the transaction isolation level that the contract supports.

  • Свойство TransactionTimeout задает период времени, в течение которого транзакция должна быть завершена или прервана.The TransactionTimeout property specifies the time period within which a transaction must complete or it aborts.

  • Свойство UseSynchronizationContext указывает, нужно ли выполнять синхронизацию входящих вызовов метода автоматически с помощью текущего объекта SynchronizationContext.The UseSynchronizationContext property indicates whether to synchronize inbound method calls automatically using the current SynchronizationContext object.

  • Свойство ValidateMustUnderstand сообщает системе, должна ли она подтверждать, что заголовки SOAP, отмеченные как MustUnderstand, фактически были поняты.The ValidateMustUnderstand property informs the system whether it should confirm that SOAP headers marked as MustUnderstand have, in fact, been understood.

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

CallbackBehaviorAttribute() CallbackBehaviorAttribute() CallbackBehaviorAttribute() CallbackBehaviorAttribute()

Инициализирует новый экземпляр класса CallbackBehaviorAttribute.Initializes a new instance of the CallbackBehaviorAttribute class.

Свойства

AutomaticSessionShutdown AutomaticSessionShutdown AutomaticSessionShutdown AutomaticSessionShutdown

Указывает, необходимо ли автоматически закрывать сеанс при закрытии службой дуплексного сеанса.Specifies whether to automatically close a session when a service closes a duplex session.

ConcurrencyMode ConcurrencyMode ConcurrencyMode ConcurrencyMode

Возвращает или задает поддержку службой одного потока, нескольких потоков или повторных входящих вызовов.Gets or sets whether a service supports one thread, multiple threads, or reentrant calls.

IgnoreExtensionDataObject IgnoreExtensionDataObject IgnoreExtensionDataObject IgnoreExtensionDataObject

Возвращает или задает значение, которое указывает, требуется ли передавать по линии связи неизвестные данные сериализации.Gets or sets a value that specifies whether to send unknown serialization data onto the wire.

IncludeExceptionDetailInFaults IncludeExceptionDetailInFaults IncludeExceptionDetailInFaults IncludeExceptionDetailInFaults

Возвращает или задает значение, указывающее, что общие необработанные исключения выполнения должны преобразовываться в исключения FaultException<TDetail> типа String и передаваться в виде сообщения об ошибке.Gets or sets a value that specifies that general unhandled execution exceptions are to be converted into a FaultException<TDetail> of type String and sent as a fault message. Задавайте значение true только во время разработки для устранения неполадок службы.Set this to true only during development to troubleshoot a service.

MaxItemsInObjectGraph MaxItemsInObjectGraph MaxItemsInObjectGraph MaxItemsInObjectGraph

Возвращает или задает максимальное количество элементов, допустимое в сериализованном объекте.Gets or sets the maximum number of items allowed in a serialized object.

TransactionIsolationLevel TransactionIsolationLevel TransactionIsolationLevel TransactionIsolationLevel

Указывает уровень изоляции транзакции.Specifies the transaction isolation level.

TransactionTimeout TransactionTimeout TransactionTimeout TransactionTimeout

Возвращает или задает период времени, в течение которого транзакция должна быть завершена.Gets or sets the period within which a transaction must complete.

TypeId TypeId TypeId TypeId

При реализации в производном классе возвращает уникальный идентификатор для этого Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)
UseSynchronizationContext UseSynchronizationContext UseSynchronizationContext UseSynchronizationContext

Возвращает или задает значение, определяющее, следует ли использовать текущий контекст синхронизации для выбора потока исполнения.Gets or sets a value that specifies whether to use the current synchronization context to choose the thread of execution.

ValidateMustUnderstand ValidateMustUnderstand ValidateMustUnderstand ValidateMustUnderstand

Возвращает или задает значение, определяющее, кем выполняется принудительная обработка заголовка SOAP MustUnderstand: системой или приложением.Gets or sets a value that specifies whether the system or the application enforces SOAP MustUnderstand header processing.

Явные реализации интерфейса

IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection) IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection) IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection) IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Настраивает элементы привязки для поддержки поведения обратного вызова.Configures the binding elements to support the callback behavior.

IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime) IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime) IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime) IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Настраивает среду выполнения клиента для поддержки объекта обратного вызова.Configures the client runtime to support the callback object.

IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Реализация метода ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher).Implementation of the ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) method. Данная реализация не используется.This implementation has no effect.

IEndpointBehavior.Validate(ServiceEndpoint) IEndpointBehavior.Validate(ServiceEndpoint) IEndpointBehavior.Validate(ServiceEndpoint) IEndpointBehavior.Validate(ServiceEndpoint)

Проверяет описание конечной точки до построения среды выполнения.Validates the endpoint description prior to building the runtime.

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые могут использоваться для получения сведений о типе интерфейса.Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к открытым свойствам и методам объекта.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Методы

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Возвращает хэш-код для данного экземпляра.Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

При переопределении в производном классе показывает, является ли значение данного экземпляра значением по умолчанию для производного класса.When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту.When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

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