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 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
- 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 |
| 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 |
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. |