Partager via


CallbackBehaviorAttribute Classe

Définition

Configure une implémentation de service de rappel dans une application cliente.

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
Héritage
CallbackBehaviorAttribute
Attributs
Implémente

Exemples

L’exemple de code suivant montre un CallbackBehaviorAttribute objet de rappel qui utilise l’objet pour déterminer le SynchronizationContext thread à marshaler, la propriété pour appliquer la ValidateMustUnderstand validation des messages et la IncludeExceptionDetailInFaults propriété pour renvoyer des exceptions en tant qu’objets FaultException au service à des fins de débogage.

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

Remarques

Utilisez l’attribut CallbackBehaviorAttribute pour configurer ou étendre le comportement d’exécution d’une implémentation de contrat de rappel dans une application cliente. Cet attribut effectue la même fonction pour la classe de rappel que l’attribut ServiceBehaviorAttribute à l’exception du comportement d’instanciation et des paramètres de transaction.

Doit CallbackBehaviorAttribute être appliqué à la classe qui implémente le contrat de rappel. Si elle est appliquée à une implémentation de contrat non duplex, une InvalidOperationException exception est levée au moment de l’exécution.

Note

Vous pouvez également utiliser l’attribut OperationBehaviorAttribute pour les implémentations d’opérations de rappel. Toutefois, si OperationBehaviorAttribute elle est utilisée sur une opération de rappel, la ReleaseInstanceMode propriété doit être None ou une InvalidOperationException exception est levée au moment de l’exécution.

Les propriétés suivantes sont disponibles :

  • La AutomaticSessionShutdown propriété ferme automatiquement la session lorsque le canal est fermé et que le rappel a terminé le traitement des messages restants.

  • La ConcurrencyMode propriété contrôle le modèle de thread interne, ce qui permet la prise en charge des objets de rappel reentrant ou multithread.

  • La IgnoreExtensionDataObject propriété permet au runtime d’ignorer les informations de sérialisation supplémentaires qui ne sont pas requises pour traiter le message.

  • La IncludeExceptionDetailInFaults propriété spécifie si les exceptions non gérées dans un service sont retournées au service en tant qu’erreurs SOAP à des fins de débogage.

  • La MaxItemsInObjectGraph propriété limite le nombre d’éléments d’un graphique d’objet sérialisé.

  • La TransactionIsolationLevel propriété spécifie le niveau d’isolation des transactions pris en charge par le contrat.

  • La TransactionTimeout propriété spécifie la période pendant laquelle une transaction doit se terminer ou abandonner.

  • La UseSynchronizationContext propriété indique s’il faut synchroniser automatiquement les appels de méthode entrante à l’aide de l’objet actuel SynchronizationContext .

  • La ValidateMustUnderstand propriété informe le système s’il doit confirmer que les en-têtes SOAP marqués comme MustUnderstand étant, en fait, ont été compris.

Constructeurs

Nom Description
CallbackBehaviorAttribute()

Initialise une nouvelle instance de la classe CallbackBehaviorAttribute.

Propriétés

Nom Description
AutomaticSessionShutdown

Spécifie s’il faut fermer automatiquement une session lorsqu’un service ferme une session duplex.

ConcurrencyMode

Obtient ou définit si un service prend en charge un thread, plusieurs threads ou des appels reentrants.

IgnoreExtensionDataObject

Obtient ou définit une valeur qui spécifie s’il faut envoyer des données de sérialisation inconnues sur le câble.

IncludeExceptionDetailInFaults

Obtient ou définit une valeur qui spécifie que les exceptions d’exécution non gérées générales doivent être converties en un FaultException<TDetail> type String et envoyées en tant que message d’erreur. Définissez cette valeur true uniquement pendant le développement pour résoudre les problèmes d’un service.

MaxItemsInObjectGraph

Obtient ou définit le nombre maximal d’éléments autorisés dans un objet sérialisé.

TransactionIsolationLevel

Spécifie le niveau d’isolation de la transaction.

TransactionTimeout

Obtient ou définit la période pendant laquelle une transaction doit se terminer.

TypeId

En cas d’implémentation dans une classe dérivée, obtient un identificateur unique pour cette Attribute.

(Hérité de Attribute)
UseSynchronizationContext

Obtient ou définit une valeur qui spécifie s’il faut utiliser le contexte de synchronisation actuel pour choisir le thread d’exécution.

ValidateMustUnderstand

Obtient ou définit une valeur qui spécifie si le système ou l’application applique le traitement d’en-tête SOAP MustUnderstand .

Méthodes

Nom Description
Equals(Object)

Retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
GetHashCode()

Retourne le code de hachage pour cette instance.

(Hérité de Attribute)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
IsDefaultAttribute()

En cas de substitution dans une classe dérivée, indique si la valeur de cette instance est la valeur par défaut de la classe dérivée.

(Hérité de Attribute)
Match(Object)

En cas de substitution dans une classe dérivée, retourne une valeur qui indique si cette instance est égale à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

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

Mappe un jeu de noms avec un jeu correspondant d'identificateurs de dispatch.

(Hérité de Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Récupère les informations de type d’un objet, qui peuvent être utilisées pour obtenir les informations de type d’une interface.

(Hérité de Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Récupère le nombre d'interfaces d'informations de type fourni par un objet (0 ou 1).

(Hérité de Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Fournit l’accès aux propriétés et méthodes exposées par un objet.

(Hérité de Attribute)
IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Configure les éléments de liaison pour prendre en charge le comportement de rappel.

IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Configure le runtime du client pour prendre en charge l’objet de rappel.

IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

Implémentation de la ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) méthode. Cette implémentation n’a aucun effet.

IEndpointBehavior.Validate(ServiceEndpoint)

Valide la description du point de terminaison avant de générer le runtime.

S’applique à