CallbackBehaviorAttribute CallbackBehaviorAttribute CallbackBehaviorAttribute CallbackBehaviorAttribute Class

Definición

Configura una implementación de servicio de devolución de llamada en una aplicación cliente.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
Herencia
CallbackBehaviorAttributeCallbackBehaviorAttributeCallbackBehaviorAttributeCallbackBehaviorAttribute
Atributos
Implementaciones

Ejemplos

El ejemplo de código siguiente muestra un CallbackBehaviorAttribute en un objeto de devolución de llamada que usa el objeto SynchronizationContext para determinar el subproceso a serializar, la propiedad ValidateMustUnderstand para exigir la validación del mensaje y la propiedad IncludeExceptionDetailInFaults para devolver las excepciones como objetos FaultException al servicio para fines de depuración.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 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

Comentarios

Utilice el atributo CallbackBehaviorAttribute para configurar o extender el comportamiento de ejecución de una implementación de contrato de devolución de llamada en una aplicación cliente.Use the CallbackBehaviorAttribute attribute to configure or extend the execution behavior of a callback contract implementation in a client application. Este atributo realiza la misma función para la clase de devolución de llamada que el atributo ServiceBehaviorAttribute, con la excepción de que crea instancias del comportamiento y de valores de la transacción.This attribute performs the same function for the callback class as the ServiceBehaviorAttribute attribute with the exception of instancing behavior and transaction settings.

CallbackBehaviorAttribute se debe aplicar a la clase que implementa el contrato de devolución de llamada.The CallbackBehaviorAttribute must be applied to the class that implements the callback contract. Si se aplica a una implementación de contrato de no dúplex, se produce una excepción InvalidOperationException en tiempo de ejecución.If applied to a non-duplex contract implementation an InvalidOperationException exception is thrown at runtime.

Nota

También puede utilizar el atributo OperationBehaviorAttribute para las implementaciones de operación de devolución de llamada.You can also use the OperationBehaviorAttribute attribute for the callback operation implementations. Sin embargo, si OperationBehaviorAttribute se utiliza en una operación de devolución de llamada, la propiedad ReleaseInstanceMode debe ser None o se produce una excepción InvalidOperationException en tiempo de ejecución.However, if OperationBehaviorAttribute is used on a callback operation, the ReleaseInstanceMode property must be None or an InvalidOperationException exception is thrown at runtime.

Están disponibles las propiedades siguientes:The following properties are available:

  • La propiedad AutomaticSessionShutdown cierra automáticamente la sesión cuando se cierra el canal y la devolución de llamadas ha acabado de procesar todos los mensajes restantes.The AutomaticSessionShutdown property automatically closes the session when the channel is closed and the callback has finished processing any remaining messages.

  • La propiedad ConcurrencyMode controla el modelo de subprocesos interno, habilitando la compatibilidad para los objetos de devolución de llamada reentrantes o multithreading.The ConcurrencyMode property controls the internal threading model, enabling support for reentrant or multithreaded callback objects.

  • La propiedad IgnoreExtensionDataObject permite que el tiempo de ejecución omita información de serialización adicional que no se exige para procesar el mensaje.The IgnoreExtensionDataObject property enables the runtime to ignore extra serialization information that is not required to process the message.

  • La propiedad IncludeExceptionDetailInFaults especifica si las excepciones no controladas en un servicio se devuelven al servicio como errores de SOAP para fines de depuración.The IncludeExceptionDetailInFaults property specifies whether unhandled exceptions in a service are returned to the service as SOAP faults for debugging purposes.

  • La propiedad MaxItemsInObjectGraph limita el número de elementos en un gráfico de objetos que se serializan.The MaxItemsInObjectGraph property limits on the number of items in an object graph that are serialized.

  • La propiedad TransactionIsolationLevel especifica el nivel del aislamiento de transacción que el contrato admite.The TransactionIsolationLevel property specifies the transaction isolation level that the contract supports.

  • La propiedad TransactionTimeout especifica el período de tiempo dentro del que una nueva transacción creada en el servicio debe completarse o se anula.The TransactionTimeout property specifies the time period within which a transaction must complete or it aborts.

  • La propiedad UseSynchronizationContext indica si sincronizar las llamadas del método entrantes de forma automática utilizando el objeto SynchronizationContext actual.The UseSynchronizationContext property indicates whether to synchronize inbound method calls automatically using the current SynchronizationContext object.

  • La propiedad ValidateMustUnderstand informa al sistema sobre si debe confirmar que los encabezados SOAP marcados como MustUnderstand han sido, de hecho, entendidos.The ValidateMustUnderstand property informs the system whether it should confirm that SOAP headers marked as MustUnderstand have, in fact, been understood.

Constructores

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

Inicializa una nueva instancia de la clase CallbackBehaviorAttribute.Initializes a new instance of the CallbackBehaviorAttribute class.

Propiedades

AutomaticSessionShutdown AutomaticSessionShutdown AutomaticSessionShutdown AutomaticSessionShutdown

Especifica si cerrar automáticamente una sesión cuando un servicio cierra una sesión dúplex.Specifies whether to automatically close a session when a service closes a duplex session.

ConcurrencyMode ConcurrencyMode ConcurrencyMode ConcurrencyMode

Obtiene o establece si un servicio admite un subproceso, varios subprocesos o llamadas reentrantes.Gets or sets whether a service supports one thread, multiple threads, or reentrant calls.

IgnoreExtensionDataObject IgnoreExtensionDataObject IgnoreExtensionDataObject IgnoreExtensionDataObject

Obtiene o establece un valor que especifica si enviar o no datos de serialización desconocidos hacia la conexión.Gets or sets a value that specifies whether to send unknown serialization data onto the wire.

IncludeExceptionDetailInFaults IncludeExceptionDetailInFaults IncludeExceptionDetailInFaults IncludeExceptionDetailInFaults

Obtiene o establece un valor que especifica que las excepciones de ejecución generales no controladas se convertirán en una FaultException<TDetail> de tipo String, y se enviarán como mensaje de error.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. Establezca este valor como true sólo durante el desarrollo para solucionar problemas de un servicio.Set this to true only during development to troubleshoot a service.

MaxItemsInObjectGraph MaxItemsInObjectGraph MaxItemsInObjectGraph MaxItemsInObjectGraph

Obtiene o establece el número máximo de elementos permitido en un objeto serializado.Gets or sets the maximum number of items allowed in a serialized object.

TransactionIsolationLevel TransactionIsolationLevel TransactionIsolationLevel TransactionIsolationLevel

Especifica el nivel de aislamiento de la transacción.Specifies the transaction isolation level.

TransactionTimeout TransactionTimeout TransactionTimeout TransactionTimeout

Obtiene o establece el período dentro del que una transacción se debe completar.Gets or sets the period within which a transaction must complete.

TypeId TypeId TypeId TypeId

Cuando se implementa en una clase derivada, obtiene un identificador único para este Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)
UseSynchronizationContext UseSynchronizationContext UseSynchronizationContext UseSynchronizationContext

Obtiene o establece un valor que especifica si utilizar el contexto de sincronización actual para elegir el subproceso de ejecución.Gets or sets a value that specifies whether to use the current synchronization context to choose the thread of execution.

ValidateMustUnderstand ValidateMustUnderstand ValidateMustUnderstand ValidateMustUnderstand

Obtiene o establece un valor que especifica si el sistema o la aplicación exige el procesamiento de encabezados MustUnderstand de SOAP.Gets or sets a value that specifies whether the system or the application enforces SOAP MustUnderstand header processing.

Implementaciones de interfaz explícitas

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

Configura los elementos de enlace para admitir el comportamiento de devolución de llamada.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)

Configura el cliente en tiempo de ejecución para admitir el objeto de devolución de llamada.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)

Implementación del método ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher).Implementation of the ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) method. Esta implementación no tiene ningún efecto.This implementation has no effect.

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

Valida la descripción del punto de conexión antes de compilar el tiempo de ejecución.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)

Asigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.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)

Obtiene la información de tipos de un objeto, que puede utilizarse para obtener la información de tipos de una interfaz.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)

Recupera el número de interfaces de información de tipo que proporciona un objeto (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)

Proporciona acceso a las propiedades y los métodos expuestos por un objeto.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Métodos

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

Devuelve un valor que indica si esta instancia es igual que un objeto especificado.Returns a value that indicates whether this instance is equal to a specified object.

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

Devuelve el código hash de esta instancia.Returns the hash code for this instance.

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

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

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

Si se reemplaza en una clase derivada, indica si el valor de esta instancia es el valor predeterminado de la clase derivada.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)

Cuando se invalida en una clase derivada, devuelve un valor que indica si esta instancia es igual a un objeto especificado.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()

Crea una copia superficial del objeto Object actual.Creates a shallow copy of the current Object.

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

Devuelve una cadena que representa el objeto actual.Returns a string that represents the current object.

(Inherited from Object)

Se aplica a