CallbackBehaviorAttribute Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Configure l'implémentation d'un 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
- 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.
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 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.
Notes
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 |
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 |
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. |