CallbackBehaviorAttribute Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Configura un'implementazione del servizio di callback in un'applicazione client.
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
- Ereditarietà
- Attributi
- Implementazioni
Esempio
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.
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
Commenti
Utilizzare l'attributo CallbackBehaviorAttribute per configurare o estendere il comportamento di esecuzione dell'implementazione di un contratto di callback in un'applicazione client. 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.
CallbackBehaviorAttribute deve essere applicato alla classe che implementa il contratto di callback. Se viene applicata all'implementazione di un contratto non duplex, viene generata un'eccezione InvalidOperationException in fase di esecuzione.
Nota
L'attributo OperationBehaviorAttribute può essere utilizzato anche per le implementazioni delle operazioni di callback. 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.
Sono disponibili le proprietà seguenti:
La proprietà AutomaticSessionShutdown determina la chiusura automatica della sessione quando il canale viene chiuso e il callback ha terminato l'elaborazione dei messaggi rimanenti.
La proprietà ConcurrencyMode controlla il modello di threading interno, consentendo il supporto di oggetti callback rientranti o multithreading.
La proprietà IgnoreExtensionDataObject consente al runtime di ignorare le informazioni di serializzazione aggiuntive che non sono necessarie per elaborare il messaggio.
La proprietà IncludeExceptionDetailInFaults specifica se restituire le eccezioni non gestite al servizio come errori SOAP per fini di debug.
La proprietà MaxItemsInObjectGraph limita il numero di elementi di un oggetto grafico che vengono serializzati.
La proprietà TransactionIsolationLevel specifica il livello di isolamento della transazione supportato dal contratto.
La proprietà TransactionTimeout specifica il periodo di tempo entro il quale una transazione deve essere completata prima di essere interrotta.
La proprietà UseSynchronizationContext indica se sincronizzare automaticamente le chiamate ai metodi in ingresso utilizzando l'oggetto SynchronizationContext corrente.
La proprietà ValidateMustUnderstand indica al sistema se è necessario verificare che le intestazioni SOAP contrassegnate con
MustUnderstand
, siano state in effetti riconosciute.
Costruttori
CallbackBehaviorAttribute() |
Inizializza una nuova istanza della classe CallbackBehaviorAttribute. |
Proprietà
AutomaticSessionShutdown |
Specifica se chiudere automaticamente una sessione quando un servizio chiude una sessione duplex. |
ConcurrencyMode |
Ottiene o imposta un valore che indica se un servizio supporta un solo thread, più thread o chiamate rientranti. |
IgnoreExtensionDataObject |
Ottiene o imposta un valore che specifica se inviare i dati di serializzazione sconosciuti in transito. |
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. Impostare questa proprietà su |
MaxItemsInObjectGraph |
Ottiene o imposta il numero massimo di elementi consentiti in un oggetto serializzato. |
TransactionIsolationLevel |
Specifica il livello di isolamento delle transazioni. |
TransactionTimeout |
Ottiene o imposta il periodo di tempo entro il quale deve essere completata una transazione. |
TypeId |
Quando è implementata in una classe derivata, ottiene un identificatore univoco della classe Attribute. (Ereditato da Attribute) |
UseSynchronizationContext |
Ottiene o imposta un valore che specifica se utilizzare il contesto di sincronizzazione corrente per scegliere il thread di esecuzione. |
ValidateMustUnderstand |
Ottiene o imposta un valore che specifica se il sistema o l'applicazione applica l'elaborazione dell'intestazione |
Metodi
Equals(Object) |
Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
GetHashCode() |
Restituisce il codice hash per l'istanza. (Ereditato da Attribute) |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
IsDefaultAttribute() |
In caso di override in una classe derivata, indica se il valore di questa istanza è il valore predefinito per la classe derivata. (Ereditato da Attribute) |
Match(Object) |
Quando è sottoposto a override in una classe derivata, restituisce un valore che indica se questa istanza equivale a un oggetto specificato. (Ereditato da Attribute) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Esegue il mapping di un set di nomi a un set corrispondente di ID dispatch. (Ereditato da Attribute) |
_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. (Ereditato da Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Recupera il numero delle interfacce di informazioni sul tipo fornite da un oggetto (0 o 1). (Ereditato da Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Fornisce l'accesso a proprietà e metodi esposti da un oggetto. (Ereditato da Attribute) |
IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection) |
Configura gli elementi di associazione per supportare il comportamento di callback. |
IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime) |
Configura il runtime client per supportare l'oggetto callback. |
IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) |
Implementazione del metodo ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher). Questa implementazione non ha alcun effetto. |
IEndpointBehavior.Validate(ServiceEndpoint) |
Convalida la descrizione dell'endpoint prima della compilazione del runtime. |