CallbackBehaviorAttribute CallbackBehaviorAttribute CallbackBehaviorAttribute CallbackBehaviorAttribute Class

Definizione

Configura un'implementazione del servizio di callback in un'applicazione client.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
Ereditarietà
CallbackBehaviorAttributeCallbackBehaviorAttributeCallbackBehaviorAttributeCallbackBehaviorAttribute
Attributi
Implementazioni

Esempi

Nell'esempio di codice seguente vengono illustrati CallbackBehaviorAttribute su un oggetto callback che utilizza l'oggetto SynchronizationContext per determinare il thread su cui effettuare il marshalling, la proprietà ValidateMustUnderstand per applicare la convalida del messaggio e la proprietà IncludeExceptionDetailInFaults per restituire eccezioni come oggetti FaultException al servizio a scopo di debug.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

Commenti

Utilizzare l'attributo CallbackBehaviorAttribute per configurare o estendere il comportamento di esecuzione dell'implementazione di un contratto di callback in un'applicazione client.Use the CallbackBehaviorAttribute attribute to configure or extend the execution behavior of a callback contract implementation in a client application. Questo attributo esegue, per la classe di callback, la stessa funzione dell'attributo ServiceBehaviorAttribute, fatta eccezione per il comportamento di creazione di istanze e le impostazioni di transazione.This attribute performs the same function for the callback class as the ServiceBehaviorAttribute attribute with the exception of instancing behavior and transaction settings.

CallbackBehaviorAttribute deve essere applicato alla classe che implementa il contratto di callback.The CallbackBehaviorAttribute must be applied to the class that implements the callback contract. Se viene applicata all'implementazione di un contratto non duplex, viene generata un'eccezione InvalidOperationException in fase di esecuzione.If applied to a non-duplex contract implementation an InvalidOperationException exception is thrown at runtime.

Nota

L'attributo OperationBehaviorAttribute può essere utilizzato anche per le implementazioni delle operazioni di callback.You can also use the OperationBehaviorAttribute attribute for the callback operation implementations. Tuttavia, se OperationBehaviorAttribute viene utilizzato in un'operazione di callback, la proprietà ReleaseInstanceMode deve essere None; in caso contrario, verrà generata un'eccezione InvalidOperationException al runtime.However, if OperationBehaviorAttribute is used on a callback operation, the ReleaseInstanceMode property must be None or an InvalidOperationException exception is thrown at runtime.

Sono disponibili le proprietà seguenti:The following properties are available:

  • La proprietà AutomaticSessionShutdown determina la chiusura automatica della sessione quando il canale viene chiuso e il callback ha terminato l'elaborazione dei messaggi rimanenti.The AutomaticSessionShutdown property automatically closes the session when the channel is closed and the callback has finished processing any remaining messages.

  • La proprietà ConcurrencyMode controlla il modello di threading interno, consentendo il supporto di oggetti callback rientranti o multithreading.The ConcurrencyMode property controls the internal threading model, enabling support for reentrant or multithreaded callback objects.

  • La proprietà IgnoreExtensionDataObject consente al runtime di ignorare le informazioni di serializzazione aggiuntive che non sono necessarie per elaborare il messaggio.The IgnoreExtensionDataObject property enables the runtime to ignore extra serialization information that is not required to process the message.

  • La proprietà IncludeExceptionDetailInFaults specifica se restituire le eccezioni non gestite al servizio come errori SOAP per fini di debug.The IncludeExceptionDetailInFaults property specifies whether unhandled exceptions in a service are returned to the service as SOAP faults for debugging purposes.

  • La proprietà MaxItemsInObjectGraph limita il numero di elementi di un oggetto grafico che vengono serializzati.The MaxItemsInObjectGraph property limits on the number of items in an object graph that are serialized.

  • La proprietà TransactionIsolationLevel specifica il livello di isolamento della transazione supportato dal contratto.The TransactionIsolationLevel property specifies the transaction isolation level that the contract supports.

  • La proprietà TransactionTimeout specifica il periodo di tempo entro il quale una transazione deve essere completata prima di essere interrotta.The TransactionTimeout property specifies the time period within which a transaction must complete or it aborts.

  • La proprietà UseSynchronizationContext indica se sincronizzare automaticamente le chiamate ai metodi in ingresso utilizzando l'oggetto SynchronizationContext corrente.The UseSynchronizationContext property indicates whether to synchronize inbound method calls automatically using the current SynchronizationContext object.

  • La proprietà ValidateMustUnderstand indica al sistema se è necessario verificare che le intestazioni SOAP contrassegnate con MustUnderstand, siano state in effetti riconosciute.The ValidateMustUnderstand property informs the system whether it should confirm that SOAP headers marked as MustUnderstand have, in fact, been understood.

Costruttori

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

Inizializza una nuova istanza della classe CallbackBehaviorAttribute.Initializes a new instance of the CallbackBehaviorAttribute class.

Proprietà

AutomaticSessionShutdown AutomaticSessionShutdown AutomaticSessionShutdown AutomaticSessionShutdown

Specifica se chiudere automaticamente una sessione quando un servizio chiude una sessione duplex.Specifies whether to automatically close a session when a service closes a duplex session.

ConcurrencyMode ConcurrencyMode ConcurrencyMode ConcurrencyMode

Ottiene o imposta un valore che indica se un servizio supporta un solo thread, più thread o chiamate rientranti.Gets or sets whether a service supports one thread, multiple threads, or reentrant calls.

IgnoreExtensionDataObject IgnoreExtensionDataObject IgnoreExtensionDataObject IgnoreExtensionDataObject

Ottiene o imposta un valore che specifica se inviare i dati di serializzazione sconosciuti in transito.Gets or sets a value that specifies whether to send unknown serialization data onto the wire.

IncludeExceptionDetailInFaults IncludeExceptionDetailInFaults IncludeExceptionDetailInFaults IncludeExceptionDetailInFaults

Ottiene o imposta un valore che specifica che le eccezioni di esecuzione generiche non gestite devono essere convertite in una classe FaultException<TDetail> di tipo String e inviate come messaggio di errore.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. Impostare questa proprietà su true solo durante la fase di sviluppo per la risoluzione dei problemi di un servizio.Set this to true only during development to troubleshoot a service.

MaxItemsInObjectGraph MaxItemsInObjectGraph MaxItemsInObjectGraph MaxItemsInObjectGraph

Ottiene o imposta il numero massimo di elementi consentiti in un oggetto serializzato.Gets or sets the maximum number of items allowed in a serialized object.

TransactionIsolationLevel TransactionIsolationLevel TransactionIsolationLevel TransactionIsolationLevel

Specifica il livello di isolamento della transazione.Specifies the transaction isolation level.

TransactionTimeout TransactionTimeout TransactionTimeout TransactionTimeout

Ottiene o imposta il periodo di tempo entro il quale deve essere completata una transazione.Gets or sets the period within which a transaction must complete.

TypeId TypeId TypeId TypeId

Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute.When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)
UseSynchronizationContext UseSynchronizationContext UseSynchronizationContext UseSynchronizationContext

Ottiene o imposta un valore che specifica se utilizzare il contesto di sincronizzazione corrente per scegliere il thread di esecuzione.Gets or sets a value that specifies whether to use the current synchronization context to choose the thread of execution.

ValidateMustUnderstand ValidateMustUnderstand ValidateMustUnderstand ValidateMustUnderstand

Ottiene o imposta un valore che specifica se il sistema o l'applicazione applica l'elaborazione dell'intestazione MustUnderstand SOAP.Gets or sets a value that specifies whether the system or the application enforces SOAP MustUnderstand header processing.

Implementazioni dell'interfaccia esplicita

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

Configura gli elementi di associazione per supportare il comportamento di callback.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 il runtime client per supportare l'oggetto callback.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)

Implementazione del metodo ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher).Implementation of the ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) method. Questa implementazione non ha alcun effetto.This implementation has no effect.

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

Convalida la descrizione dell'endpoint prima della compilazione del runtime.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)

Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch.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)

Recupera le informazioni sul tipo relative a un oggetto, che possono essere usate per ottenere informazioni sul tipo relative a un'interfaccia.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 il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 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)

Fornisce l'accesso a proprietà e metodi esposti da un oggetto.Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

Metodi

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

Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato.Returns a value that indicates whether this instance is equal to a specified object.

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

Restituisce il codice hash per l'istanza.Returns the hash code for this instance.

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

Ottiene l'oggetto Type dell'istanza corrente.Gets the Type of the current instance.

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

In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata.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)

Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato.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 superficiale dell'oggetto Object corrente.Creates a shallow copy of the current Object.

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

Restituisce una stringa che rappresenta l'oggetto corrente.Returns a string that represents the current object.

(Inherited from Object)

Si applica a