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 viene illustrato un CallbackBehaviorAttribute oggetto su un oggetto callback che utilizza l'oggetto SynchronizationContext per determinare il thread a cui eseguire il marshalling, la proprietà per applicare la ValidateMustUnderstand convalida dei messaggi e la IncludeExceptionDetailInFaults proprietà per restituire eccezioni come FaultException oggetti 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
Usare l'attributo CallbackBehaviorAttribute per configurare o estendere il comportamento di esecuzione di un'implementazione del contratto di callback in un'applicazione client. Questo attributo esegue la stessa funzione per la classe di callback dell'attributo ServiceBehaviorAttribute , ad eccezione del comportamento di creazione di istanze e delle impostazioni delle transazioni.
Deve CallbackBehaviorAttribute essere applicato alla classe che implementa il contratto di callback. Se applicato a un'implementazione del contratto non duplex, viene generata un'eccezione InvalidOperationException in fase di esecuzione.
Annotazioni
È anche possibile usare l'attributo OperationBehaviorAttribute per le implementazioni dell'operazione di callback. Tuttavia, se OperationBehaviorAttribute viene usato in un'operazione di callback, la ReleaseInstanceMode proprietà deve essere None o viene generata un'eccezione InvalidOperationException in fase di esecuzione.
Sono disponibili le proprietà seguenti:
La AutomaticSessionShutdown proprietà chiude automaticamente la sessione quando il canale viene chiuso e il callback ha terminato l'elaborazione di eventuali messaggi rimanenti.
La ConcurrencyMode proprietà controlla il modello di threading interno, abilitando il supporto per gli oggetti callback reentrant o multithreading.
La IgnoreExtensionDataObject proprietà consente al runtime di ignorare informazioni di serializzazione aggiuntive non necessarie per elaborare il messaggio.
La IncludeExceptionDetailInFaults proprietà specifica se le eccezioni non gestite in un servizio vengono restituite al servizio come errori SOAP a scopo di debug.
La MaxItemsInObjectGraph proprietà limita il numero di elementi in un oggetto grafico serializzato.
La TransactionIsolationLevel proprietà specifica il livello di isolamento della transazione supportato dal contratto.
La TransactionTimeout proprietà specifica il periodo di tempo entro il quale una transazione deve essere completata o interrotta.
La UseSynchronizationContext proprietà indica se sincronizzare automaticamente le chiamate al metodo in ingresso usando l'oggetto corrente SynchronizationContext .
La ValidateMustUnderstand proprietà informa il sistema se deve confermare che le intestazioni SOAP contrassegnate come
MustUnderstandsono state effettivamente comprese.
Costruttori
| Nome | Descrizione |
|---|---|
| CallbackBehaviorAttribute() |
Inizializza una nuova istanza della classe CallbackBehaviorAttribute. |
Proprietà
| Nome | Descrizione |
|---|---|
| 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 thread, più thread o chiamate reentranti. |
| IgnoreExtensionDataObject |
Ottiene o imposta un valore che specifica se inviare dati di serializzazione sconosciuti in transito. |
| IncludeExceptionDetailInFaults |
Ottiene o imposta un valore che specifica che le eccezioni generali di esecuzione non gestite devono essere convertite in un FaultException<TDetail> oggetto di tipo String e inviate come messaggio di errore. Impostare questa opzione |
| 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 entro il quale deve essere completata una transazione. |
| TypeId |
Se implementato in una classe derivata, ottiene un identificatore univoco per questo 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 SOAP |
Metodi
| Nome | Descrizione |
|---|---|
| Equals(Object) |
Restituisce un valore che indica se questa istanza è uguale a un oggetto specificato. (Ereditato da Attribute) |
| GetHashCode() |
Restituisce il codice hash per questa istanza. (Ereditato da Attribute) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| IsDefaultAttribute() |
Quando sottoposto a 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 è uguale a un oggetto specificato. (Ereditato da Attribute) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| _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 per un oggetto, che può essere utilizzato per ottenere le informazioni sul tipo per 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 alle proprietà e ai 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 ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) metodo . Questa implementazione non ha alcun effetto. |
| IEndpointBehavior.Validate(ServiceEndpoint) |
Convalida la descrizione dell'endpoint prima di compilare il runtime. |