CallbackBehaviorAttribute Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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
- 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
MustUnderstandvaló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 |
| 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 |
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. |