CallbackBehaviorAttribute Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Konfiguriert eine Rückrufdienstimplementierung in einer Clientanwendung.
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
- Vererbung
- Attribute
- Implementiert
Beispiele
Im folgenden Codebeispiel wird ein CallbackBehaviorAttribute Rückrufobjekt gezeigt, das das SynchronizationContext Objekt verwendet, um zu bestimmen, zu welchem Thread gemarsativ werden soll, die ValidateMustUnderstand Eigenschaft zum Erzwingen der Nachrichtenüberprüfung und die IncludeExceptionDetailInFaults Eigenschaft, die Ausnahmen als FaultException Objekte für den Dienst für Debuggingzwecke zurückgibt.
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
Hinweise
Verwenden Sie das CallbackBehaviorAttribute Attribut, um das Ausführungsverhalten einer Rückrufvertragsimplementierung in einer Clientanwendung zu konfigurieren oder zu erweitern. Dieses Attribut führt dieselbe Funktion für die Rückrufklasse wie das ServiceBehaviorAttribute Attribut mit Ausnahme des Verhaltens der Instancing und transaktionseinstellungen aus.
Die CallbackBehaviorAttribute Muss auf die Klasse angewendet werden, die den Rückrufvertrag implementiert. Bei Anwendung auf eine Nicht-Duplex-Vertragsimplementierung wird zur Laufzeit eine InvalidOperationException Ausnahme ausgelöst.
Hinweis
Sie können auch das Attribut für die OperationBehaviorAttribute Implementierungen des Rückrufvorgangs verwenden. Wenn OperationBehaviorAttribute sie jedoch für einen Rückrufvorgang verwendet wird, muss die ReleaseInstanceMode Eigenschaft sein None oder eine InvalidOperationException Ausnahme wird zur Laufzeit ausgelöst.
Die folgenden Eigenschaften sind verfügbar:
Die AutomaticSessionShutdown Eigenschaft schließt die Sitzung automatisch, wenn der Kanal geschlossen wird, und der Rückruf hat die Verarbeitung aller verbleibenden Nachrichten abgeschlossen.
Die ConcurrencyMode Eigenschaft steuert das interne Threadingmodell und ermöglicht die Unterstützung für reentrant- oder multithreaded callback-Objekte.
Die IgnoreExtensionDataObject Eigenschaft ermöglicht es der Laufzeit, zusätzliche Serialisierungsinformationen zu ignorieren, die nicht zum Verarbeiten der Nachricht erforderlich sind.
Die IncludeExceptionDetailInFaults Eigenschaft gibt an, ob unbehandelte Ausnahmen in einem Dienst für Debuggingzwecke als SOAP-Fehler an den Dienst zurückgegeben werden.
Die MaxItemsInObjectGraph Eigenschaft beschränkt die Anzahl der Elemente in einem Objektdiagramm, die serialisiert werden.
Die TransactionIsolationLevel Eigenschaft gibt die Transaktionsisolationsstufe an, die der Vertrag unterstützt.
Die TransactionTimeout Eigenschaft gibt den Zeitraum an, in dem eine Transaktion abgeschlossen oder abgebrochen werden muss.
Die UseSynchronizationContext Eigenschaft gibt an, ob eingehende Methodenaufrufe automatisch mithilfe des aktuellen SynchronizationContext Objekts synchronisiert werden sollen.
Die ValidateMustUnderstand Eigenschaft informiert das System darüber, ob es bestätigen soll, dass SOAP-Header, die als
MustUnderstand"tatsächlich" gekennzeichnet sind, verstanden wurden.
Konstruktoren
| Name | Beschreibung |
|---|---|
| CallbackBehaviorAttribute() |
Initialisiert eine neue Instanz der CallbackBehaviorAttribute-Klasse. |
Eigenschaften
| Name | Beschreibung |
|---|---|
| AutomaticSessionShutdown |
Gibt an, ob eine Sitzung automatisch geschlossen werden soll, wenn ein Dienst eine Duplexsitzung schließt. |
| ConcurrencyMode |
Ruft ab oder legt fest, ob ein Dienst einen Thread, mehrere Threads oder erneute Aufrufe unterstützt. |
| IgnoreExtensionDataObject |
Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob unbekannte Serialisierungsdaten an das Draht gesendet werden sollen. |
| IncludeExceptionDetailInFaults |
Dient zum Abrufen oder Festlegen eines Werts, der angibt, dass allgemeine unbehandelte Ausführungs exceptions in einen FaultException<TDetail> Typ String konvertiert und als Fehlermeldung gesendet werden sollen. Legen Sie dies |
| MaxItemsInObjectGraph |
Ruft die maximale Anzahl von Elementen ab, die in einem serialisierten Objekt zulässig sind, oder legt diese fest. |
| TransactionIsolationLevel |
Bestimmt die Isolationsstufe für die Transaktionen. |
| TransactionTimeout |
Dient zum Abrufen oder Festlegen des Zeitraums, in dem eine Transaktion abgeschlossen werden muss. |
| TypeId |
Wenn sie in einer abgeleiteten Klasse implementiert wird, wird ein eindeutiger Bezeichner für diese Attribute. (Geerbt von Attribute) |
| UseSynchronizationContext |
Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob der aktuelle Synchronisierungskontext zum Auswählen des Ausführungsthreads verwendet werden soll. |
| ValidateMustUnderstand |
Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob das System oder die Anwendung die SOAP-Headerverarbeitung |
Methoden
| Name | Beschreibung |
|---|---|
| Equals(Object) |
Gibt einen Wert zurück, der angibt, ob diese Instanz einem angegebenen Objekt entspricht. (Geerbt von Attribute) |
| GetHashCode() |
Gibt den Hashcode für diese Instanz zurück. (Geerbt von Attribute) |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| IsDefaultAttribute() |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, gibt an, ob der Wert dieser Instanz der Standardwert für die abgeleitete Klasse ist. (Geerbt von Attribute) |
| Match(Object) |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird ein Wert zurückgegeben, der angibt, ob diese Instanz einem angegebenen Objekt entspricht. (Geerbt von Attribute) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| _Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Ordnet eine Reihe von Namen einer entsprechenden Reihe von Dispatchbezeichnern zu. (Geerbt von Attribute) |
| _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Ruft die Typinformationen für ein Objekt ab, mit denen die Typinformationen für eine Schnittstelle abgerufen werden können. (Geerbt von Attribute) |
| _Attribute.GetTypeInfoCount(UInt32) |
Ruft die Anzahl der Schnittstellen mit Typinformationen ab, die von einem Objekt bereitgestellt werden (0 oder 1). (Geerbt von Attribute) |
| _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Bietet Zugriff auf Eigenschaften und Methoden, die von einem Objekt verfügbar gemacht werden. (Geerbt von Attribute) |
| IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection) |
Konfiguriert die Bindungselemente, um das Rückrufverhalten zu unterstützen. |
| IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime) |
Konfiguriert die Clientlaufzeit, um das Rückrufobjekt zu unterstützen. |
| IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) |
Implementierung der ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) Methode. Diese Implementierung hat keine Auswirkung. |
| IEndpointBehavior.Validate(ServiceEndpoint) |
Überprüft die Endpunktbeschreibung vor dem Erstellen der Laufzeit. |