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é volání objektu, který používá SynchronizationContext objekt k určení, které vlákno má zařaďovat, ValidateMustUnderstand vlastnost vynutit 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 pro 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 automaticky zavře relaci, když je kanál zavřen a zpětné volání dokončilo zpracování všech zbývajících zpráv.

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

  • Vlastnost IgnoreExtensionDataObject umožňuje modulu runtime ignorovat další informace serializace, které nejsou vyžadovány 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 se transakce musí dokončit, nebo ji přeruší.

  • Vlastnost UseSynchronizationContext urč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 byly ve skutečnosti srozumitelné.

Konstruktory

Name Description
CallbackBehaviorAttribute()

Inicializuje novou instanci CallbackBehaviorAttribute třídy.

Vlastnosti

Name Description
AutomaticSessionShutdown

Určuje, jestli 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 znovu zadat 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í jsou převedeny na FaultException<TDetail> typ String a odeslán jako chybová zpráva. Tuto možnost nastavte true pouze během vývoje pro řešení potíží 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í dokončit.

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ček SOAP MustUnderstand .

Metody

Name Description
Equals(Object)

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

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

Vrátí kód hash pro tuto instanci.

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

Získá Type aktuální instance.

(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 pro odvozenou třídu.

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

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

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

Vytvoří mělkou kopii aktuálního 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í

Name Description
_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 pro 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