Freigeben über


CallbackBehaviorAttribute Klasse

Definition

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
CallbackBehaviorAttribute
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 true nur während der Entwicklung fest, um probleme mit einem Dienst zu beheben.

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

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.

Gilt für: