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é 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
MustUnderstandbyly 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 |
| 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 |
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. |