CallbackBehaviorAttribute Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Настраивает реализацию службы обратного вызова в клиентском приложении.
public ref class CallbackBehaviorAttribute sealed : Attribute, System::ServiceModel::Description::IEndpointBehavior
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class CallbackBehaviorAttribute : Attribute, System.ServiceModel.Description.IEndpointBehavior
[<System.AttributeUsage(System.AttributeTargets.Class)>]
type CallbackBehaviorAttribute = class
inherit Attribute
interface IEndpointBehavior
Public NotInheritable Class CallbackBehaviorAttribute
Inherits Attribute
Implements IEndpointBehavior
- Наследование
- Атрибуты
- Реализации
Примеры
В следующем примере кода показан 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();
}
}
}
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 Используйте атрибут для настройки или расширения поведения выполнения реализации контракта обратного вызова в клиентском приложении. Этот атрибут выполняет ту же функцию для класса обратного вызова, что 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 |
Возвращает или задает значение, указывающее, что общие необработанные исключения выполнения должны быть преобразованы в тип String и отправлены в FaultException<TDetail> виде сообщения об ошибке. Установите это значение |
| MaxItemsInObjectGraph |
Возвращает или задает максимальное количество элементов, разрешенных в сериализованном объекте. |
| TransactionIsolationLevel |
Указывает уровень изоляции транзакции. |
| TransactionTimeout |
Возвращает или задает период, в течение которого должна завершиться транзакция. |
| TypeId |
При реализации в производном классе получает уникальный идентификатор для этого Attribute. (Унаследовано от Attribute) |
| UseSynchronizationContext |
Возвращает или задает значение, указывающее, следует ли использовать текущий контекст синхронизации для выбора потока выполнения. |
| ValidateMustUnderstand |
Возвращает или задает значение, указывающее, применяет ли система или приложение обработку заголовков SOAP |
Методы
| Имя | Описание |
|---|---|
| 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) |
Проверяет описание конечной точки перед созданием среды выполнения. |