クリックして評価とフィードバックをお寄せください
MSDN
MSDN ライブラリ
.NET 開発
.NET Framework 3.5
.NET Framework 3.5
System.ServiceModel 名前空間
ServiceContractAttribute クラス
 SessionMode プロパティ

  低帯域幅での表示をオンにする
このページは次のバージョンについて記述しています。
Microsoft Visual Studio 2008/.NET Framework 3.5

その他のバージョンについては、以下の情報を参照してください。
.NET Framework クラス ライブラリ
ServiceContractAttribute..::.SessionMode プロパティ

更新 : 2007 年 11 月

セッションが許可されるか、許可されないか、または必要であるかを示す値を取得または設定します。

名前空間 :  System.ServiceModel
アセンブリ :  System.ServiceModel (System.ServiceModel.dll 内)
Visual Basic (宣言)
Public Property SessionMode As SessionMode
Visual Basic (使用法)
Dim instance As ServiceContractAttribute
Dim value As SessionMode

value = instance.SessionMode

instance.SessionMode = value
C#
public SessionMode SessionMode { get; set; }
Visual C++
public:
property SessionMode SessionMode {
    SessionMode get ();
    void set (SessionMode value);
}
J#
/** @property */
public SessionMode get_SessionMode()
/** @property */
public  void set_SessionMode(SessionMode value)
JScript
public function get SessionMode () : SessionMode
public function set SessionMode (value : SessionMode)

プロパティ値

型 : System.ServiceModel..::.SessionMode
SessionMode は、セッションが許可されるか、許可されないか、または必要であるかを示します。
例外条件
ArgumentOutOfRangeException

値が、System.ServiceModel..::.SessionMode 値ではありません。

SessionMode プロパティを使用して、バインディングでエンドポイント間のセッションをサポートすることを要求します。セッションとは、2 つ以上のエンドポイント間で交換される一連のメッセージを相互に関連付ける方法のことです。サービスがチャネル セッションをサポートする場合は、InstanceContextMode プロパティを使用して、サービス コントラクトが実装するインスタンスとチャネルセッションの関係を指定できます。バインディングがセッションをサポートしない場合は、例外がスローされます。

たとえば、SessionMode プロパティを SessionMode..::.RequiredInstanceContextMode プロパティを PerSession に設定した場合、クライアントは、同じ接続を使用して同じサービス オブジェクトを繰り返し呼び出すことができます。

セッションとサービス インスタンスの詳細については、「セッションの使用」および「セッション、インスタンス化、および同時実行」を参照してください。

Aa344790.alert_note(ja-jp,VS.90).gifメモ :

セッションをサポートするチャネルは、特定のセッションとのサービス インスタンスの既定の関連付けをサポートします。ただし、セッションの実装が異なれば、セッション ベースのインスタンス化の制御に加えてサポートされる機能も異なります。WCF には、セッションの多いアプリケーション動作を実現するために使用できる 4 種類のセッションが用意されており、それぞれのセッションは、そのセッションの種類に固有の追加動作を提供します。

  1. System.ServiceModel.Channels..::.SecurityBindingElement は セキュリティ セッションをサポートします。このセッションでは、通信の両側が暗号化またはデジタル署名、あるいはその両方の処理を行うことに合意し、すべてのメッセージはセキュリティで保護されたメッセージ交換に関連付けられます。詳細については、「サービスのセキュリティ保護」を参照してください。たとえば、セキュリティ セッションと信頼できるセッションの両方のサポートを含む System.ServiceModel..::.WSHttpBinding は、既定では、メッセージを暗号化してデジタル署名を行うセキュリティで保護されたセッションのみを使用します。

  2. System.ServiceModel..::.NetTcpBinding は、TCP/IP 接続によって公開されるセッションをサポートし、接続セッションにより、すべてのメッセージがソケット レベルで関連付けられるようにします。

  3. WS-ReliableMessaging 仕様を実装する System.ServiceModel.Channels..::.ReliableSessionBindingElement は、メッセージが順に 1 回だけ配信される、信頼できるセッションをサポートしているため、メッセージがその交換時に複数のノードを通過するときでも信頼性を実現します。詳細については、「信頼できるセッション」を参照してください。

  4. System.ServiceModel..::.NetMsmqBinding は、MSMQ データグラム セッションを提供します。詳細については、「Windows Communication Foundation のキュー」を参照してください。

SessionMode プロパティを設定すると、コントラクトが必要とするセッションの種類は指定されず、コントラクトがセッションを必要とすることだけが指定されることに注意してください。

次のサービス コントラクトは、SampleDuplexHello サービス実装とメッセージ交換するときに、構成されたバインディングでセッションを使用することを要求します。

C#
using System;
using System.Collections.Generic;
using System.ServiceModel;
using System.Threading;

namespace Microsoft.WCF.Documentation
{
  [ServiceContract(
    Name = "SampleDuplexHello",
    Namespace = "http://microsoft.wcf.documentation",
    CallbackContract = typeof(IHelloCallbackContract),
    SessionMode = SessionMode.Required
  )]
  public interface IDuplexHello
  {
    [OperationContract(IsOneWay = true)]
    void Hello(string greeting);
  }

  public interface IHelloCallbackContract
  {
    [OperationContract(IsOneWay = true)]
    void Reply(string responseToGreeting);
  }

  [ServiceBehaviorAttribute(InstanceContextMode=InstanceContextMode.PerSession)]
  public class DuplexHello : IDuplexHello
  {

    public DuplexHello()
    {
      Console.WriteLine("Service object created: " + this.GetHashCode().ToString());
    }

    ~DuplexHello()
    {
      Console.WriteLine("Service object destroyed: " + this.GetHashCode().ToString());
    }

    public void Hello(string greeting)
    {
      Console.WriteLine("Caller sent: " + greeting);
      Console.WriteLine("Session ID: " + OperationContext.Current.SessionId);
      Console.WriteLine("Waiting two seconds before returning call.");
      // Put a slight delay to demonstrate asynchronous behavior on client.
      Thread.Sleep(2000);
      IHelloCallbackContract callerProxy
        = OperationContext.Current.GetCallbackChannel<IHelloCallbackContract>();
      string response = "Service object " + this.GetHashCode().ToString() + " received: " + greeting;
      Console.WriteLine("Sending back: " + response);
      callerProxy.Reply(response);
    }
  }
}

  • 直前の呼び出し元に対する完全な信頼。このメンバは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。

Windows Vista, Windows XP SP2, Windows Server 2003

.NET Framework および .NET Compact Framework では、各プラットフォームのすべてのバージョンはサポートしていません。サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

.NET Framework

サポート対象 : 3.5、3.0
コミュニティ コンテンツ   コミュニティ コンテンツとは
新しいコンテンツの追加 RSS  注釈
Processing
© 2009 Microsoft Corporation. All rights reserved. 使用条件  |  商標  |  プライバシー
Page view tracker