CallbackBehaviorAttribute Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
- 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 |
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 |
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. |