Sdílet prostřednictvím


CallbackBehaviorAttribute Třída

Definice

Nakonfiguruje implementaci služby zpětného volání v klientské aplikaci.

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
Dědičnost
CallbackBehaviorAttribute
Atributy
Implementuje

Příklady

Následující příklad kódu ukazuje CallbackBehaviorAttribute na zpětném volání objektu, který používá SynchronizationContext objekt k určení, které vlákno se má zařaďovat, ValidateMustUnderstand vlastnost pro vynucení ověření zprávy a IncludeExceptionDetailInFaults vlastnost vrátit výjimky jako FaultException objekty do služby pro účely ladění.

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

Poznámky

CallbackBehaviorAttribute Atribut použijte ke konfiguraci nebo rozšíření chování provádění implementace kontraktu zpětného volání v klientské aplikaci. Tento atribut provádí stejnou funkci pro třídu zpětného volání jako ServiceBehaviorAttribute atribut s výjimkou chování instance a nastavení transakce.

Musí CallbackBehaviorAttribute být použita na třídu, která implementuje kontrakt zpětného volání. Pokud se použije na ne duplexní implementaci kontraktu, InvalidOperationException vyvolá se výjimka za běhu.

Poznámka

Můžete také použít OperationBehaviorAttribute atribut pro implementace operací zpětného volání. Pokud OperationBehaviorAttribute se však používá v operaci zpětného volání, ReleaseInstanceMode vlastnost musí být None nebo InvalidOperationException je vyvolán výjimka za běhu.

K dispozici jsou následující vlastnosti:

  • Vlastnost AutomaticSessionShutdown při zavření kanálu automaticky ukončí relaci a zpětné volání dokončí zpracování všech zbývajících zpráv.

  • Vlastnost ConcurrencyMode řídí interní model vláken, což umožňuje podporu pro objekty zpětného volání s více vlákny.

  • Vlastnost IgnoreExtensionDataObject umožňuje modulu runtime ignorovat další serializační informace, které nejsou nutné ke zpracování zprávy.

  • Vlastnost IncludeExceptionDetailInFaults určuje, zda neošetřené výjimky ve službě jsou vráceny do služby jako chyby SOAP pro účely ladění.

  • Vlastnost MaxItemsInObjectGraph omezuje počet položek v grafu objektu, který je serializován.

  • Vlastnost TransactionIsolationLevel určuje úroveň izolace transakce, kterou kontrakt podporuje.

  • Vlastnost TransactionTimeout určuje časové období, během kterého transakce musí být dokončena nebo je přerušena.

  • Vlastnost UseSynchronizationContext označuje, zda se mají synchronizovat příchozí volání metody automaticky pomocí aktuálního SynchronizationContext objektu.

  • Vlastnost ValidateMustUnderstand informuje systém, zda má potvrdit, že hlavičky SOAP označené jako MustUnderstand ve skutečnosti byly srozumitelné.

Konstruktory

CallbackBehaviorAttribute()

Inicializuje novou instanci CallbackBehaviorAttribute třídy.

Vlastnosti

AutomaticSessionShutdown

Určuje, zda se má relace automaticky zavřít, když služba zavře duplexní relaci.

ConcurrencyMode

Získá nebo nastaví, zda služba podporuje jedno vlákno, více vláken nebo opakované volání.

IgnoreExtensionDataObject

Získá nebo nastaví hodnotu, která určuje, zda se mají odesílat neznámá serializační data do drátu.

IncludeExceptionDetailInFaults

Získá nebo nastaví hodnotu, která určuje, že obecné neošetřené výjimky spuštění se mají převést na FaultException<TDetail> typ String a odeslat jako chybovou zprávu. Tuto možnost nastavte true pouze při vývoji, abyste mohli řešit potíže se službou.

MaxItemsInObjectGraph

Získá nebo nastaví maximální počet položek povolených v serializovaném objektu.

TransactionIsolationLevel

Určuje úroveň izolace transakce.

TransactionTimeout

Získá nebo nastaví období, ve kterém transakce musí být dokončena.

TypeId

Při implementaci v odvozené třídě získá jedinečný identifikátor pro tento Attribute.

(Zděděno od Attribute)
UseSynchronizationContext

Získá nebo nastaví hodnotu, která určuje, zda použít aktuální synchronizační kontext zvolit vlákno provádění.

ValidateMustUnderstand

Získá nebo nastaví hodnotu, která určuje, zda systém nebo aplikace vynucuje zpracování hlavičky SOAP MustUnderstand .

Metody

Equals(Object)

Vrací hodnotu, která určuje, zda je tato instance rovna zadanému objektu.

(Zděděno od Attribute)
GetHashCode()

Vrátí hodnotu hash pro tuto instanci.

(Zděděno od Attribute)
GetType()

Type Získá aktuální instanci.

(Zděděno od Object)
IsDefaultAttribute()

Při přepsání v odvozené třídě určuje, zda hodnota této instance je výchozí hodnotou odvozené třídy.

(Zděděno od Attribute)
Match(Object)

Při přepsání v odvozené třídě vrátí hodnotu, která označuje, zda se tato instance rovná zadanému objektu.

(Zděděno od Attribute)
MemberwiseClone()

Vytvoří použádnou kopii aktuálního souboru Object.

(Zděděno od Object)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Mapuje sadu názvů na odpovídající sadu identifikátorů pro rozesílání.

(Zděděno od Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Načte informace o typu objektu, který lze použít k získání informací o typu rozhraní.

(Zděděno od Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Získá počet rozhraní typu informací, které objekt poskytuje (0 nebo 1).

(Zděděno od Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Poskytuje přístup k vlastnostem a metodám vystaveným objektem.

(Zděděno od Attribute)
IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

Nakonfiguruje prvky vazby tak, aby podporovaly chování zpětného volání.

IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Nakonfiguruje modul runtime klienta tak, aby podporoval objekt zpětného volání.

IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) Implementace metody. Tato implementace nemá žádný vliv.

IEndpointBehavior.Validate(ServiceEndpoint)

Před sestavením modulu runtime ověří popis koncového bodu.

Platí pro