Lire en anglais

Partager via


CallbackBehaviorAttribute Classe

Définition

Configure l'implémentation d'un service de rappel dans une application cliente.

C#
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class CallbackBehaviorAttribute : Attribute, System.ServiceModel.Description.IEndpointBehavior
Héritage
CallbackBehaviorAttribute
Attributs
Implémente

Exemples

L'exemple de code suivant illustre un attribut CallbackBehaviorAttribute sur un objet de rappel qui utilise l'objet SynchronizationContext pour déterminer le thread à marshaler, la propriété ValidateMustUnderstand pour appliquer la validation de message et la propriété IncludeExceptionDetailInFaults pour retourner des exceptions au service sous la forme d'objets FaultException à des fins de débogage.

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

Remarques

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

L'attribut CallbackBehaviorAttribute doit être appliqué à la classe chargée d'implémenter le contrat de rappel. En cas d'application à une implémentation de contrat non-duplex, une exception InvalidOperationException est levée au moment de l'exécution.

Note

Vous pouvez également utiliser l'attribut OperationBehaviorAttribute pour des implémentations d'opérations de rappel. Toutefois, si vous utilisez OperationBehaviorAttribute dans le cadre d'une opération de rappel, la propriété ReleaseInstanceMode doit être None ou une exception InvalidOperationException est levée au moment de l'exécution.

Les propriétés suivantes sont disponibles :

  • La propriété AutomaticSessionShutdown ferme automatiquement la session lorsque le canal est fermé et le rappel a fini de traiter les messages restants.

  • La propriété ConcurrencyMode contrôle le modèle de thread interne et permet ainsi la prise en charge des objets de rappel réentrants ou multithread.

  • La propriété IgnoreExtensionDataObject permet au temps d'exécution d'ignorer les informations de sérialisation supplémentaires qui ne sont pas requises pour le traitement du message.

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

  • La propriété MaxItemsInObjectGraph limite le nombre d'éléments sérialisés dans un graphique d'objets.

  • La propriété TransactionIsolationLevel spécifie le niveau d'isolation de la transaction que le contrat prend en charge.

  • La propriété TransactionTimeout spécifie le délai au cours duquel une transaction doit être exécutée, faute de quoi elle sera abandonnée.

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

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

Constructeurs

CallbackBehaviorAttribute()

Initialise une nouvelle instance de la classe CallbackBehaviorAttribute.

Propriétés

AutomaticSessionShutdown

Spécifie si une session doit être automatiquement fermée 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 réentrants.

IgnoreExtensionDataObject

Obtient ou définit une valeur indiquant si des données de sérialisation inconnues doivent être envoyées sur le réseau.

IncludeExceptionDetailInFaults

Obtient ou définit une valeur qui indique que les exceptions d'exécution générales non prises en charge doivent être converties en FaultException<TDetail> de type String et envoyées en tant que message d'erreur. Affectez la valeur true uniquement lors du développement afin de dépanner 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 au cours de laquelle une transaction doit se terminer.

TypeId

Lors de l'implémentation dans une classe dérivée, obtient un identificateur unique pour l'objet Attribute.

(Hérité de Attribute)
UseSynchronizationContext

Obtient ou définit une valeur qui spécifie si le contexte de synchronisation actuel doit être utilisé pour sélectionner 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 MustUnderstand SOAP.

Méthodes

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 de cette instance.

(Hérité de Attribute)
GetType()

Obtient le 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 pour la classe dérivée.

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

En cas de substitution dans une classe dérivée, retourne une valeur indiquant si cette instance équivaut à un objet spécifié.

(Hérité de Attribute)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ToString()

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

(Hérité de Object)

Implémentations d’interfaces explicites

_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 pour 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 aux méthodes exposées par un objet.

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

Configure les éléments de liaison afin de prendre en charge le comportement d’appel.

IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Configure l'exécution du client pour la prise en charge de l'objet de rappel.

IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

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

IEndpointBehavior.Validate(ServiceEndpoint)

Valide la description du point de terminaison avant de générer l'exécution.

S’applique à

Produit Versions
.NET Core 1.0, Core 1.1
.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
UWP 10.0