Прочитать на английском

Поделиться через


CallbackBehaviorAttribute Класс

Определение

Настраивает реализацию службы обратного вызова в клиентском приложении.

[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class CallbackBehaviorAttribute : Attribute, System.ServiceModel.Description.IEndpointBehavior
Наследование
CallbackBehaviorAttribute
Атрибуты
Реализации

Примеры

В следующем примере кода показан CallbackBehaviorAttribute для объекта обратного вызова, в котором используются: объект SynchronizationContext для определения потока, в который требуется маршалировать; свойство ValidateMustUnderstand для принудительной проверки сообщений; свойство IncludeExceptionDetailInFaults для возврата исключений в службу в виде объектов FaultException, используемых для целей отладки.

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();
    }
  }
}

Комментарии

Атрибут CallbackBehaviorAttribute используется для настройки или расширения поведения выполнения при реализации контракта обратного вызова в клиентском приложении. Этот атрибут выполняет для класса обратного вызова ту же функцию, что и атрибут ServiceBehaviorAttribute, без учета поведения экземпляров и параметров транзакции.

Атрибут CallbackBehaviorAttribute необходимо применять к классу, в котором реализован контракт обратного вызова. Если класс применяется к реализации недуплексного контракта, во время выполнения создается исключение InvalidOperationException.

Примечание

Для реализации операции обратного вызова также можно использовать атрибут OperationBehaviorAttribute. Если атрибут OperationBehaviorAttribute используется для операции обратного вызова, свойство ReleaseInstanceMode должно иметь значение None, или во время выполнения выводится исключение InvalidOperationException.

Доступны следующие свойства.

  • Свойство AutomaticSessionShutdown автоматически закрывает сеанс после закрытия канала и завершения обработки остающихся сообщений обратным вызовом.

  • Свойство ConcurrencyMode управляет внутренней моделью потоков, обеспечивая поддержку многопоточных объектов обратного вызова или объектов с повторными входящими вызовами.

  • Свойство IgnoreExtensionDataObject позволяет среде выполнения пропускать дополнительную информацию о сериализации, которая не требуется для обработки сообщения.

  • Свойство IncludeExceptionDetailInFaults указывает на то, выводятся ли необработанные исключения службы для целей отладки как ошибки протокола SOAP.

  • Свойство MaxItemsInObjectGraph ограничивает количество сериализуемых элементов в графе объекта.

  • Свойство TransactionIsolationLevel задает уровень изоляции транзакций, поддерживаемый контрактом.

  • Свойство TransactionTimeout задает период времени, в течение которого транзакция должна быть завершена или прервана.

  • Свойство UseSynchronizationContext указывает, нужно ли выполнять синхронизацию входящих вызовов метода автоматически с помощью текущего объекта SynchronizationContext.

  • Свойство ValidateMustUnderstand сообщает системе, должна ли она подтверждать, что заголовки SOAP, отмеченные как MustUnderstand, фактически были поняты.

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

CallbackBehaviorAttribute()

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

Свойства

AutomaticSessionShutdown

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

ConcurrencyMode

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

IgnoreExtensionDataObject

Возвращает или задает значение, которое указывает, требуется ли передавать по линии связи неизвестные данные сериализации.

IncludeExceptionDetailInFaults

Возвращает или задает значение, указывающее, что общие необработанные исключения выполнения должны преобразовываться в исключения FaultException<TDetail> типа String и передаваться в виде сообщения об ошибке. Задавайте значение true только во время разработки для устранения неполадок службы.

MaxItemsInObjectGraph

Возвращает или задает максимальное количество элементов, допустимое в сериализованном объекте.

TransactionIsolationLevel

Указывает уровень изоляции транзакции.

TransactionTimeout

Возвращает или задает период времени, в течение которого транзакция должна быть завершена.

TypeId

В случае реализации в производном классе возвращает уникальный идентификатор для этого атрибута Attribute.

(Унаследовано от Attribute)
UseSynchronizationContext

Возвращает или задает значение, определяющее, следует ли использовать текущий контекст синхронизации для выбора потока исполнения.

ValidateMustUnderstand

Возвращает или задает значение, определяющее, кем выполняется принудительная обработка заголовка SOAP MustUnderstand: системой или приложением.

Методы

Equals(Object)

Возвращает значение, показывающее, равен ли экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код данного экземпляра.

(Унаследовано от Attribute)
GetType()

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

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, является ли этот экземпляр равным заданному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

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

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

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Возвращает сведения о типе объекта, которые можно использовать для получения сведений о типе интерфейса.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к открытым свойствам и методам объекта.

(Унаследовано от Attribute)
IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Настраивает элементы привязки для поддержки поведения обратного вызова.

IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Настраивает среду выполнения клиента для поддержки объекта обратного вызова.

IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Реализация метода ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher). Данная реализация не используется.

IEndpointBehavior.Validate(ServiceEndpoint)

Проверяет описание конечной точки до построения среды выполнения.

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

Продукт Версии
.NET Core 1.0, Core 1.1, 8 (package-provided), 9 (package-provided), 10 (package-provided)
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
UWP 10.0