CallbackBehaviorAttribute Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Konfiguruje implementację usługi wywołania zwrotnego w aplikacji klienckiej.
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
- Dziedziczenie
- Atrybuty
- Implementuje
Przykłady
Poniższy przykład kodu przedstawia CallbackBehaviorAttribute obiekt w obiekcie wywołania zwrotnego, który używa SynchronizationContext obiektu w celu określenia wątku do marshalingu, ValidateMustUnderstand właściwości wymuszania weryfikacji komunikatów oraz IncludeExceptionDetailInFaults właściwości zwracania wyjątków jako FaultException obiektów do usługi na potrzeby debugowania.
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
Uwagi
Użyj atrybutu CallbackBehaviorAttribute , aby skonfigurować lub rozszerzyć zachowanie wykonywania implementacji kontraktu wywołania zwrotnego w aplikacji klienckiej. Ten atrybut wykonuje tę samą funkcję dla klasy wywołania zwrotnego co ServiceBehaviorAttribute atrybut z wyjątkiem zachowania instancing i ustawień transakcji.
Należy CallbackBehaviorAttribute zastosować element do klasy, która implementuje kontrakt wywołania zwrotnego. W przypadku zastosowania do implementacji InvalidOperationException kontraktu niedupleksowego wyjątek jest zgłaszany w czasie wykonywania.
Uwaga
Można również użyć atrybutu OperationBehaviorAttribute dla implementacji operacji wywołania zwrotnego. Jeśli OperationBehaviorAttribute jednak jest używana w operacji wywołania zwrotnego, ReleaseInstanceMode właściwość musi być None lub wyjątek InvalidOperationException jest zgłaszany w czasie wykonywania.
Dostępne są następujące właściwości:
Właściwość AutomaticSessionShutdown automatycznie zamyka sesję po zamknięciu kanału, a wywołanie zwrotne zakończyło przetwarzanie pozostałych komunikatów.
Właściwość ConcurrencyMode steruje wewnętrznym modelem wątków, umożliwiając obsługę obiektów wywołania zwrotnego wielowątkowego lub wielowątkowego.
Właściwość IgnoreExtensionDataObject umożliwia środowisku uruchomieniowemu ignorowanie dodatkowych informacji o serializacji, które nie są wymagane do przetworzenia komunikatu.
Właściwość IncludeExceptionDetailInFaults określa, czy nieobsługiwane wyjątki w usłudze są zwracane do usługi jako błędy protokołu SOAP na potrzeby debugowania.
Właściwość MaxItemsInObjectGraph ogranicza liczbę elementów na grafie obiektu, które są serializowane.
Właściwość TransactionIsolationLevel określa poziom izolacji transakcji, który obsługuje kontrakt.
Właściwość TransactionTimeout określa okres, w którym transakcja musi zostać zakończona lub przerwana.
Właściwość UseSynchronizationContext wskazuje, czy synchronizować wywołania metody przychodzącej automatycznie przy użyciu bieżącego SynchronizationContext obiektu.
Właściwość ValidateMustUnderstand informuje system, czy powinien potwierdzić, że nagłówki protokołu SOAP oznaczone jako
MustUnderstand
zostały w rzeczywistości zrozumiałe.
Konstruktory
CallbackBehaviorAttribute() |
Inicjuje nowe wystąpienie klasy CallbackBehaviorAttribute. |
Właściwości
AutomaticSessionShutdown |
Określa, czy ma być automatycznie zamykana sesja, gdy usługa zamyka sesję dwukierunkową. |
ConcurrencyMode |
Pobiera lub ustawia, czy usługa obsługuje jeden wątek, wiele wątków lub wywołań powtarzających. |
IgnoreExtensionDataObject |
Pobiera lub ustawia wartość określającą, czy wysyłać nieznane dane serializacji do przewodu. |
IncludeExceptionDetailInFaults |
Pobiera lub ustawia wartość określającą, że ogólne nieobsługiwane wyjątki wykonywania mają być konwertowane na FaultException<TDetail> typ String i wysyłane jako komunikat o błędzie. Ustaw tę wartość |
MaxItemsInObjectGraph |
Pobiera lub ustawia maksymalną liczbę elementów dozwolonych w serializowanym obiekcie. |
TransactionIsolationLevel |
Określa poziom izolacji transakcji. |
TransactionTimeout |
Pobiera lub ustawia okres, w którym transakcja musi zostać ukończona. |
TypeId |
Po zaimplementowaniu w klasie pochodnej pobiera unikatowy identyfikator dla tego Attributeelementu . (Odziedziczone po Attribute) |
UseSynchronizationContext |
Pobiera lub ustawia wartość, która określa, czy używać bieżącego kontekstu synchronizacji do wybrania wątku wykonywania. |
ValidateMustUnderstand |
Pobiera lub ustawia wartość, która określa, czy system lub aplikacja wymusza przetwarzanie nagłówka protokołu SOAP |
Metody
Equals(Object) |
Zwraca wartość wskazującą, czy to wystąpienie jest równe podanemu obiektowi. (Odziedziczone po Attribute) |
GetHashCode() |
Zwraca wartość skrótu dla tego wystąpienia. (Odziedziczone po Attribute) |
GetType() |
Type Pobiera wartość bieżącego wystąpienia. (Odziedziczone po Object) |
IsDefaultAttribute() |
Podczas zastępowania w klasie pochodnej wskazuje, czy wartość tego wystąpienia jest wartością domyślną dla klasy pochodnej. (Odziedziczone po Attribute) |
Match(Object) |
Po przesłonięciu w klasie pochodnej zwraca wartość wskazującą, czy to wystąpienie jest równe określonemu obiektowi. (Odziedziczone po Attribute) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Jawne implementacje interfejsu
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr) |
Zestaw nazw jest mapowany na odpowiedni zestaw identyfikatorów wysyłania. (Odziedziczone po Attribute) |
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) |
Pobiera informacje o typie dla obiektu, który może służyć do pobierania informacji o typie dla interfejsu. (Odziedziczone po Attribute) |
_Attribute.GetTypeInfoCount(UInt32) |
Pobiera informację o liczbie typów interfejsów, jakie zawiera obiekt (0 lub 1). (Odziedziczone po Attribute) |
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) |
Umożliwia dostęp do właściwości i metod udostępnianych przez obiekt. (Odziedziczone po Attribute) |
IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection) |
Konfiguruje elementy powiązania w celu obsługi zachowania wywołania zwrotnego. |
IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime) |
Konfiguruje środowisko uruchomieniowe klienta do obsługi obiektu wywołania zwrotnego. |
IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) |
Implementacja ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) metody . Ta implementacja nie ma wpływu. |
IEndpointBehavior.Validate(ServiceEndpoint) |
Sprawdza poprawność opisu punktu końcowego przed utworzeniem środowiska uruchomieniowego. |