CallbackBehaviorAttribute CallbackBehaviorAttribute CallbackBehaviorAttribute CallbackBehaviorAttribute Class

定義

クライアント アプリケーションでのコールバック サービス実装を構成します。Configures a callback service implementation in a client application.

public ref class CallbackBehaviorAttribute sealed : Attribute, System::ServiceModel::Description::IEndpointBehavior
[System.AttributeUsage(System.AttributeTargets.Class)]
public sealed class CallbackBehaviorAttribute : Attribute, System.ServiceModel.Description.IEndpointBehavior
type CallbackBehaviorAttribute = class
    inherit Attribute
    interface IEndpointBehavior
Public NotInheritable Class CallbackBehaviorAttribute
Inherits Attribute
Implements IEndpointBehavior
継承
CallbackBehaviorAttributeCallbackBehaviorAttributeCallbackBehaviorAttributeCallbackBehaviorAttribute
属性
実装

CallbackBehaviorAttribute オブジェクトを使用してマーシャリングするスレッドを決定するコールバック オブジェクトの SynchronizationContext、メッセージ検証を実施する ValidateMustUnderstand プロパティ、および例外を IncludeExceptionDetailInFaults オブジェクトとしてデバッグ用のサービスに返す FaultException プロパティのコード例を次に示します。The following code example shows a CallbackBehaviorAttribute on a callback object that uses the SynchronizationContext object to determine which thread to marshal to, the ValidateMustUnderstand property to enforce message validation, and the IncludeExceptionDetailInFaults property to return exceptions as FaultException objects to the service for debugging purposes.

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 Microsoft.VisualBasic
Imports System
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

注釈

CallbackBehaviorAttribute 属性を使用して、クライアント アプリケーションでのコールバック コントラクトの実装の実行動作を構成または拡張します。Use the CallbackBehaviorAttribute attribute to configure or extend the execution behavior of a callback contract implementation in a client application. この属性は、インスタンス化動作とトランザクションの設定を除き、ServiceBehaviorAttribute 属性と同じ機能をコールバック クラスに対して実行します。This attribute performs the same function for the callback class as the ServiceBehaviorAttribute attribute with the exception of instancing behavior and transaction settings.

CallbackBehaviorAttribute は、コールバック コントラクトを実装するクラスに適用する必要があります。The CallbackBehaviorAttribute must be applied to the class that implements the callback contract. 双方向以外のコントラクト実装に適用した場合は、実行時に InvalidOperationException 例外がスローされます。If applied to a non-duplex contract implementation an InvalidOperationException exception is thrown at runtime.

注意

コールバック操作の実装に対して OperationBehaviorAttribute 属性を使用することもできます。You can also use the OperationBehaviorAttribute attribute for the callback operation implementations. ただし、OperationBehaviorAttribute をコールバック操作で使用する場合は、ReleaseInstanceMode プロパティが None でなければなりません。そうでない場合は、実行時に InvalidOperationException 例外がスローされます。However, if OperationBehaviorAttribute is used on a callback operation, the ReleaseInstanceMode property must be None or an InvalidOperationException exception is thrown at runtime.

使用できるプロパティは次のとおりです。The following properties are available:

  • AutomaticSessionShutdown プロパティは、チャネルが閉じられ、残っているすべてのメッセージの処理をコールバックが終了した時点でセッションを自動的に閉じます。The AutomaticSessionShutdown property automatically closes the session when the channel is closed and the callback has finished processing any remaining messages.

  • ConcurrencyMode プロパティは、内部スレッド モデルを制御して、再入可能またはマルチスレッド コールバック オブジェクトのサポートを有効にします。The ConcurrencyMode property controls the internal threading model, enabling support for reentrant or multithreaded callback objects.

  • IgnoreExtensionDataObject プロパティは、メッセージの処理では必要がない余分なシリアル化情報をランタイムが無視できるようにします。The IgnoreExtensionDataObject property enables the runtime to ignore extra serialization information that is not required to process the message.

  • IncludeExceptionDetailInFaults プロパティは、サービス内の未処理例外を、デバッグ用に SOAP エラーとしてサービスに返すかどうかを指定します。The IncludeExceptionDetailInFaults property specifies whether unhandled exceptions in a service are returned to the service as SOAP faults for debugging purposes.

  • MaxItemsInObjectGraph プロパティは、シリアル化されるオブジェクト グラフ内の項目数を制限します。The MaxItemsInObjectGraph property limits on the number of items in an object graph that are serialized.

  • TransactionIsolationLevel プロパティは、コントラクトがサポートするトランザクションの分離レベルを指定します。The TransactionIsolationLevel property specifies the transaction isolation level that the contract supports.

  • TransactionTimeout プロパティは、トランザクションを完了しなければならない期間を指定します。この期間内に完了しない場合、トランザクションは中止されます。The TransactionTimeout property specifies the time period within which a transaction must complete or it aborts.

  • UseSynchronizationContext プロパティは、現在の SynchronizationContext オブジェクトを使用して、受信メソッドの呼び出しを同期するかどうかを示します。The UseSynchronizationContext property indicates whether to synchronize inbound method calls automatically using the current SynchronizationContext object.

  • ValidateMustUnderstand プロパティは、MustUnderstand としてマークされた SOAP ヘッダーが間違いなく理解されたことを確認する必要があるかどうかをシステムに通知します。The ValidateMustUnderstand property informs the system whether it should confirm that SOAP headers marked as MustUnderstand have, in fact, been understood.

コンストラクター

CallbackBehaviorAttribute() CallbackBehaviorAttribute() CallbackBehaviorAttribute() CallbackBehaviorAttribute()

CallbackBehaviorAttribute クラスの新しいインスタンスを初期化します。Initializes a new instance of the CallbackBehaviorAttribute class.

プロパティ

AutomaticSessionShutdown AutomaticSessionShutdown AutomaticSessionShutdown AutomaticSessionShutdown

サービスが双方向セッションを閉じたときに、セッションを自動的に閉じるかどうかを指定します。Specifies whether to automatically close a session when a service closes a duplex session.

ConcurrencyMode ConcurrencyMode ConcurrencyMode ConcurrencyMode

サービスが、1 つのスレッド、複数のスレッド、または再入呼び出しをサポートするかどうかを示す値を取得または設定します。Gets or sets whether a service supports one thread, multiple threads, or reentrant calls.

IgnoreExtensionDataObject IgnoreExtensionDataObject IgnoreExtensionDataObject IgnoreExtensionDataObject

不明なシリアル化データをネットワークで送信するかどうかを指定する値を取得または設定します。Gets or sets a value that specifies whether to send unknown serialization data onto the wire.

IncludeExceptionDetailInFaults IncludeExceptionDetailInFaults IncludeExceptionDetailInFaults IncludeExceptionDetailInFaults

一般的な未処理の実行例外を FaultException<TDetail> 型の String に変換してエラー メッセージとして送信するように指定する値を取得または設定します。Gets or sets a value that specifies that general unhandled execution exceptions are to be converted into a FaultException<TDetail> of type String and sent as a fault message. この属性は、開発時にサービスのトラブルシューティングを行う場合にのみ、true に設定します。Set this to true only during development to troubleshoot a service.

MaxItemsInObjectGraph MaxItemsInObjectGraph MaxItemsInObjectGraph MaxItemsInObjectGraph

シリアル化されるオブジェクトで許可される項目の最大数を取得または設定します。Gets or sets the maximum number of items allowed in a serialized object.

TransactionIsolationLevel TransactionIsolationLevel TransactionIsolationLevel TransactionIsolationLevel

トランザクションの分離レベルを指定します。Specifies the transaction isolation level.

TransactionTimeout TransactionTimeout TransactionTimeout TransactionTimeout

トランザクションを完了する必要がある制限時間を取得または設定します。Gets or sets the period within which a transaction must complete.

TypeId TypeId TypeId TypeId

派生クラスで実装されると、この Attribute の一意の識別子を取得します。When implemented in a derived class, gets a unique identifier for this Attribute.

(Inherited from Attribute)
UseSynchronizationContext UseSynchronizationContext UseSynchronizationContext UseSynchronizationContext

現在の同期コンテキストを使用して実行スレッドを選択するかどうかを指定する値を取得または設定します。Gets or sets a value that specifies whether to use the current synchronization context to choose the thread of execution.

ValidateMustUnderstand ValidateMustUnderstand ValidateMustUnderstand ValidateMustUnderstand

システムまたはアプリケーションで SOAP MustUnderstand ヘッダー処理を強制的に行うかどうかを指定する値を取得または設定します。Gets or sets a value that specifies whether the system or the application enforces SOAP MustUnderstand header processing.

明示的なインターフェイスの実装

IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection) IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection) IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection) IEndpointBehavior.AddBindingParameters(ServiceEndpoint, BindingParameterCollection)

バインド要素を、コールバック動作をサポートするように構成します。Configures the binding elements to support the callback behavior.

IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime) IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime) IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime) IEndpointBehavior.ApplyClientBehavior(ServiceEndpoint, ClientRuntime)

クライアント ランタイムを、コールバック オブジェクトをサポートするように構成します。Configures the client runtime to support the callback object.

IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) IEndpointBehavior.ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher)

ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) メソッドの実装。Implementation of the ApplyDispatchBehavior(ServiceEndpoint, EndpointDispatcher) method. この実装は、効果がありません。This implementation has no effect.

IEndpointBehavior.Validate(ServiceEndpoint) IEndpointBehavior.Validate(ServiceEndpoint) IEndpointBehavior.Validate(ServiceEndpoint) IEndpointBehavior.Validate(ServiceEndpoint)

ランタイムを構築する前に、エンドポイントの説明を検証します。Validates the endpoint description prior to building the runtime.

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

一連の名前を対応する一連のディスパッチ識別子に割り当てます。Maps a set of names to a corresponding set of dispatch identifiers.

(Inherited from Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr) _Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

オブジェクトの型情報を取得します。この情報はインターフェイスの型情報の取得に使用できます。Retrieves the type information for an object, which can be used to get the type information for an interface.

(Inherited from Attribute)
_Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32) _Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。Retrieves the number of type information interfaces that an object provides (either 0 or 1).

(Inherited from Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr) _Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されたプロパティおよびメソッドへのアクセスを提供します。Provides access to properties and methods exposed by an object.

(Inherited from Attribute)

メソッド

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。Returns a value that indicates whether this instance is equal to a specified object.

(Inherited from Attribute)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

このインスタンスのハッシュ コードを返します。Returns the hash code for this instance.

(Inherited from Attribute)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute()

派生クラスでオーバーライドされるとき、このインスタンスの値が派生クラスの既定値であるかどうかを示します。When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class.

(Inherited from Attribute)
Match(Object) Match(Object) Match(Object) Match(Object)

派生クラス内でオーバーライドされたときに、指定したオブジェクトとこのインスタンスが等しいかどうかを示す値を返します。When overridden in a derived class, returns a value that indicates whether this instance equals a specified object.

(Inherited from Attribute)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

現在のオブジェクトを表す文字列を返します。Returns a string that represents the current object.

(Inherited from Object)

適用対象