CallbackBehaviorAttribute Klas
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee configureert u een callback-service-implementatie in een clienttoepassing.
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
- Overname
- Kenmerken
- Implementeringen
Voorbeelden
In het volgende codevoorbeeld ziet u een CallbackBehaviorAttribute callback-object dat gebruikmaakt van het SynchronizationContext object om te bepalen aan welke thread u marshal wilt toevoegen, de ValidateMustUnderstand eigenschap voor het afdwingen van berichtvalidatie en de IncludeExceptionDetailInFaults eigenschap voor het retourneren van uitzonderingen als FaultException objecten aan de service voor foutopsporing.
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
Opmerkingen
Gebruik het CallbackBehaviorAttribute kenmerk om het uitvoeringsgedrag van een callback-contract te configureren of uit te breiden in een clienttoepassing. Dit kenmerk voert dezelfde functie uit voor de callback-klasse als het ServiceBehaviorAttribute kenmerk, met uitzondering van gedrag en transactie-instellingen voor instancing.
De CallbackBehaviorAttribute moet worden toegepast op de klasse die het callback-contract implementeert. Als deze wordt toegepast op een niet-dubbelzijdige contractuitvoering, wordt er tijdens runtime een InvalidOperationException uitzondering gegenereerd.
Note
U kunt ook het OperationBehaviorAttribute kenmerk gebruiken voor de implementaties van callback-bewerkingen. Als OperationBehaviorAttribute echter wordt gebruikt voor een callback-bewerking, moet de ReleaseInstanceMode eigenschap zijn None of wordt er tijdens runtime een InvalidOperationException uitzondering gegenereerd.
De volgende eigenschappen zijn beschikbaar:
De AutomaticSessionShutdown eigenschap sluit de sessie automatisch wanneer het kanaal wordt gesloten en de callback is voltooid met het verwerken van resterende berichten.
De ConcurrencyMode eigenschap bepaalt het interne threadingmodel, waardoor ondersteuning wordt ingeschakeld voor reentrant- of multithreaded callback-objecten.
Met IgnoreExtensionDataObject de eigenschap kan de runtime extra serialisatie-informatie negeren die niet vereist is om het bericht te verwerken.
De IncludeExceptionDetailInFaults eigenschap geeft aan of niet-verwerkte uitzonderingen in een service worden geretourneerd naar de service als SOAP-fouten voor foutopsporingsdoeleinden.
De MaxItemsInObjectGraph eigenschapslimieten voor het aantal items in een objectgrafiek die worden geserialiseerd.
De TransactionIsolationLevel eigenschap geeft het isolatieniveau voor transacties op dat door het contract wordt ondersteund.
De TransactionTimeout eigenschap geeft de periode aan waarin een transactie moet worden voltooid of wordt afgebroken.
De UseSynchronizationContext eigenschap geeft aan of binnenkomende methode-aanroepen automatisch moeten worden gesynchroniseerd met behulp van het huidige SynchronizationContext object.
De ValidateMustUnderstand eigenschap informeert het systeem of het moet bevestigen dat SOAP-headers die zijn gemarkeerd als
MustUnderstanddie in feite zijn begrepen.
Constructors
| Name | Description |
|---|---|
| CallbackBehaviorAttribute() |
Initialiseert een nieuw exemplaar van de CallbackBehaviorAttribute klasse. |
Eigenschappen
| Name | Description |
|---|---|
| AutomaticSessionShutdown |
Hiermee geeft u op of een sessie automatisch moet worden gesloten wanneer een service een dubbelzijdige sessie sluit. |
| ConcurrencyMode |
Hiermee wordt opgehaald of ingesteld of een service één thread, meerdere threads of nieuwe aanroepen ondersteunt. |
| IgnoreExtensionDataObject |
Hiermee wordt een waarde opgehaald of ingesteld waarmee wordt aangegeven of onbekende serialisatiegegevens naar de kabel moeten worden verzonden. |
| IncludeExceptionDetailInFaults |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft dat algemene niet-verwerkte uitvoeringsonderzondering moet worden geconverteerd naar een FaultException<TDetail> type String en als een foutbericht moet worden verzonden. Stel deze optie alleen in op |
| MaxItemsInObjectGraph |
Hiermee wordt het maximum aantal items opgehaald of ingesteld dat is toegestaan in een geserialiseerd object. |
| TransactionIsolationLevel |
Hiermee geeft u het niveau van transactieisolatie op. |
| TransactionTimeout |
Hiermee haalt u de periode op waarin een transactie moet worden voltooid of stelt u deze in. |
| TypeId |
Wanneer deze wordt geïmplementeerd in een afgeleide klasse, krijgt u Attributehiervoor een unieke id. (Overgenomen van Attribute) |
| UseSynchronizationContext |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of de huidige synchronisatiecontext moet worden gebruikt om de thread van de uitvoering te kiezen. |
| ValidateMustUnderstand |
Hiermee wordt een waarde opgehaald of ingesteld die aangeeft of het systeem of de toepassing SOAP-headerverwerking |
Methoden
| Name | Description |
|---|---|
| Equals(Object) |
Retourneert een waarde die aangeeft of dit exemplaar gelijk is aan een opgegeven object. (Overgenomen van Attribute) |
| GetHashCode() |
Retourneert de hash-code voor dit exemplaar. (Overgenomen van Attribute) |
| GetType() |
Hiermee haalt u de Type huidige instantie op. (Overgenomen van Object) |
| IsDefaultAttribute() |
Wanneer deze wordt overschreven in een afgeleide klasse, geeft u aan of de waarde van dit exemplaar de standaardwaarde is voor de afgeleide klasse. (Overgenomen van Attribute) |
| Match(Object) |
Wanneer deze wordt overschreven in een afgeleide klasse, wordt een waarde geretourneerd die aangeeft of dit exemplaar gelijk is aan een opgegeven object. (Overgenomen van Attribute) |
| MemberwiseClone() |
Hiermee maakt u een ondiepe kopie van de huidige Object. (Overgenomen van Object) |
| ToString() |
Retourneert een tekenreeks die het huidige object vertegenwoordigt. (Overgenomen van Object) |
Expliciete interface-implementaties
| Name | Description |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Hiermee wordt een set namen toegewezen aan een bijbehorende set verzend-id's. (Overgenomen van Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Hiermee haalt u de typegegevens voor een object op, die kan worden gebruikt om de typegegevens voor een interface op te halen. (Overgenomen van Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Hiermee wordt het aantal type-informatieinterfaces opgehaald dat een object biedt (0 of 1). (Overgenomen van Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Biedt toegang tot eigenschappen en methoden die door een object worden weergegeven. (Overgenomen van Attribute) |
| IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection) |
Hiermee configureert u de bindingselementen ter ondersteuning van het callback-gedrag. |
| IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime) |
Hiermee configureert u de clientruntime om het callback-object te ondersteunen. |
| IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) |
Implementatie van de ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) methode. Deze implementatie heeft geen effect. |
| IEndpointBehavior.Validate(ServiceEndpoint) |
Valideert de eindpuntbeschrijving voordat u de runtime bouwt. |