CallbackBehaviorAttribute Osztály

Definíció

A visszahívási szolgáltatás implementálását konfigurálja egy ügyfélalkalmazásban.

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
Öröklődés
CallbackBehaviorAttribute
Attribútumok
Megvalósítás

Példák

Az alábbi kódpéldában egy CallbackBehaviorAttribute visszahívási objektum látható, amely az objektumot használja annak SynchronizationContext meghatározására, hogy melyik szálhoz kell csatlakozni, a tulajdonságot, amely érvényesíti az ValidateMustUnderstand üzenetérvényesítést, a IncludeExceptionDetailInFaults tulajdonság pedig kivételeket ad vissza objektumként FaultException a szolgáltatásnak hibakeresés céljából.

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

Megjegyzések

CallbackBehaviorAttribute Az attribútum használatával konfigurálhatja vagy kibővítheti a visszahívási szerződés végrehajtásának viselkedését egy ügyfélalkalmazásban. Ez az attribútum ugyanazt a függvényt hajtja végre a visszahívási osztályban, mint az ServiceBehaviorAttribute attribútum, kivéve az instancing viselkedését és a tranzakciós beállításokat.

Ezt CallbackBehaviorAttribute a visszahívási szerződést megvalósító osztályra kell alkalmazni. Ha nem kétoldalas szerződés megvalósítására vonatkozik, a rendszer kivételt InvalidOperationException jelent futásidőben.

Note

A visszahívási művelet implementációihoz is használhatja OperationBehaviorAttribute az attribútumot. Ha OperationBehaviorAttribute azonban visszahívási műveletben használják, a ReleaseInstanceMode tulajdonságnak kell lennie None , vagy InvalidOperationException futásidőben kivételt kell eredményeznie.

A következő tulajdonságok érhetők el:

  • A AutomaticSessionShutdown tulajdonság automatikusan bezárja a munkamenetet a csatorna bezárásakor, és a visszahívás befejezte a fennmaradó üzenetek feldolgozását.

  • A ConcurrencyMode tulajdonság szabályozza a belső szálmodellt, amely lehetővé teszi az újraértelmezett vagy többszálú visszahívási objektumok támogatását.

  • A IgnoreExtensionDataObject tulajdonság lehetővé teszi, hogy a futtatókörnyezet figyelmen kívül hagyja az üzenet feldolgozásához nem szükséges további szerializálási információkat.

  • A IncludeExceptionDetailInFaults tulajdonság azt határozza meg, hogy a szolgáltatás nem kezelt kivételeit a rendszer SOAP-hibaként adja-e vissza hibakeresési célból.

  • A MaxItemsInObjectGraph tulajdonság korlátozza a szerializált objektumdiagram elemeinek számát.

  • A TransactionIsolationLevel tulajdonság megadja a szerződés által támogatott tranzakcióelkülönítési szintet.

  • A TransactionTimeout tulajdonság azt az időtartamot adja meg, amelyen belül egy tranzakciónak befejeződnie kell, vagy megszakad.

  • A UseSynchronizationContext tulajdonság azt jelzi, hogy a bejövő metódushívások automatikusan szinkronizálhatók-e az aktuális SynchronizationContext objektummal.

  • A ValidateMustUnderstand tulajdonság tájékoztatja a rendszert arról, hogy meg kell-e erősítenie, hogy a SOAP-fejlécek MustUnderstand valójában értve lettek-e.

Konstruktorok

Name Description
CallbackBehaviorAttribute()

Inicializálja a CallbackBehaviorAttribute osztály új példányát.

Tulajdonságok

Name Description
AutomaticSessionShutdown

Megadja, hogy egy szolgáltatás kétoldalas munkamenet bezárásakor automatikusan bezárjon-e egy munkamenetet.

ConcurrencyMode

Lekérdezi vagy beállítja, hogy egy szolgáltatás támogat-e egy szálat, több szálat vagy újraküldéses hívásokat.

IgnoreExtensionDataObject

Lekéri vagy beállít egy értéket, amely meghatározza, hogy ismeretlen szerializálási adatokat küldjön-e a vezetékre.

IncludeExceptionDetailInFaults

Lekéri vagy beállít egy értéket, amely meghatározza, hogy az általános nem kezelt végrehajtási kivételeket típussá FaultException<TDetail> kell konvertálniString, és hibaüzenetként kell elküldeni. Ezt csak a true fejlesztés során állítsa be egy szolgáltatás hibaelhárításához.

MaxItemsInObjectGraph

Lekéri vagy beállítja a szerializált objektumokban engedélyezett elemek maximális számát.

TransactionIsolationLevel

A tranzakcióelkülönítés szintjét adja meg.

TransactionTimeout

Lekéri vagy beállítja azt az időszakot, amelyen belül egy tranzakciónak végre kell hajtania.

TypeId

Ha származtatott osztályban implementálják, ehhez egy egyedi azonosítót Attributekap.

(Öröklődés forrása Attribute)
UseSynchronizationContext

Lekéri vagy beállít egy értéket, amely meghatározza, hogy az aktuális szinkronizálási környezetet használja-e a végrehajtási szál kiválasztásához.

ValidateMustUnderstand

Lekéri vagy beállít egy értéket, amely meghatározza, hogy a rendszer vagy az alkalmazás kényszeríti-e a SOAP MustUnderstand fejlécfeldolgozást.

Metódusok

Name Description
Equals(Object)

Olyan értéket ad vissza, amely jelzi, hogy ez a példány egyenlő-e egy adott objektummal.

(Öröklődés forrása Attribute)
GetHashCode()

A példány kivonatkódját adja vissza.

(Öröklődés forrása Attribute)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
IsDefaultAttribute()

Ha egy származtatott osztályban felül van bírálva, azt jelzi, hogy a példány értéke-e a származtatott osztály alapértelmezett értéke.

(Öröklődés forrása Attribute)
Match(Object)

Származtatott osztály felülírásakor egy olyan értéket ad vissza, amely jelzi, hogy ez a példány egy adott objektummal egyenlő-e.

(Öröklődés forrása Attribute)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

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

Névkészletet képez le a küldési azonosítók megfelelő készletére.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Lekéri egy objektum típusadatait, amelyek a felület típusadatainak lekérésére használhatók.

(Öröklődés forrása Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Lekéri az objektumok által biztosított típusinformációs felületek számát (0 vagy 1).

(Öröklődés forrása Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Hozzáférést biztosít az objektumok által közzétett tulajdonságokhoz és metódusokhoz.

(Öröklődés forrása Attribute)
IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

A visszahívási viselkedés támogatására konfigurálja a kötési elemeket.

IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

Konfigurálja az ügyfél futtatókörnyezetét a visszahívási objektum támogatásához.

IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) A módszer megvalósítása. Ennek a megvalósításnak nincs hatása.

IEndpointBehavior.Validate(ServiceEndpoint)

Ellenőrzi a végpont leírását a futtatókörnyezet létrehozása előtt.

A következőre érvényes: