Aracılığıyla paylaş


SessionMode Sabit listesi

Tanım

Bir sözleşmenin gerektirdiği veya desteklediği güvenilir oturumların desteğini göstermek için kullanılabilen değerleri belirtir.

public enum class SessionMode
public enum SessionMode
type SessionMode = 
Public Enum SessionMode
Devralma
SessionMode

Alanlar

Allowed 0

Gelen bağlama bunları destekliyorsa sözleşmenin oturumları desteklediğini belirtir.

NotAllowed 2

Sözleşmenin hiçbir zaman oturum başlatan bağlamaları desteklemediğini belirtir.

Required 1

Sözleşmenin oturumlu bağlama gerektirdiğini belirtir. Bağlama oturumu destekleyecek şekilde yapılandırılmamışsa bir özel durum oluşur.

Örnekler

Aşağıdaki kod örneği, hizmet sözleşmesinin SessionMode ServiceContractAttribute oturum durumunu destekleyen bağlamalar gerektirdiğini belirtmek IMyService için özelliğinin nasıl kullanılacağını gösterir.

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);
    }
  }
}


Imports System.Collections.Generic
Imports System.ServiceModel
Imports System.Threading

Namespace Microsoft.WCF.Documentation
    <ServiceContract(Name:="SampleDuplexHello", Namespace:="http://microsoft.wcf.documentation", _
                     CallbackContract:=GetType(IHelloCallbackContract), SessionMode:=SessionMode.Required)> _
    Public Interface IDuplexHello
        <OperationContract(IsOneWay:=True)> _
        Sub Hello(ByVal greeting As String)
    End Interface

  Public Interface IHelloCallbackContract
    <OperationContract(IsOneWay := True)> _
    Sub Reply(ByVal responseToGreeting As String)
  End Interface

  <ServiceBehaviorAttribute(InstanceContextMode:=InstanceContextMode.PerSession)> _
  Public Class DuplexHello
      Implements IDuplexHello

    Public Sub New()
      Console.WriteLine("Service object created: " & Me.GetHashCode().ToString())
    End Sub

    Protected Overrides Sub Finalize()
      Console.WriteLine("Service object destroyed: " & Me.GetHashCode().ToString())
    End Sub

    Public Sub Hello(ByVal greeting As String) Implements IDuplexHello.Hello
      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)
      Dim callerProxy As IHelloCallbackContract = OperationContext.Current.GetCallbackChannel(Of IHelloCallbackContract)()
            Dim response = "Service object " & Me.GetHashCode().ToString() & " received: " & greeting
      Console.WriteLine("Sending back: " & response)
      callerProxy.Reply(response)
    End Sub
  End Class
End Namespace

Açıklamalar

Hizmet sözleşmesine SessionMode ServiceContractAttribute.SessionMode bağlanan veya bunu destekleyen uç noktalar arasındaki oturumları kullanmak için bağlamaları zorunlu kmak, izin vermek veya yasaklamak için numaralandırmayı özelliğiyle birlikte kullanın. Oturum, iki veya daha fazla uç nokta arasında ileti alışverişi yapılan bir ileti kümesini ilişkilendirmenin bir yoludur. Oturumlar hakkında daha fazla bilgi için bkz. Oturumları Kullanma.

Hizmetiniz oturumları destekliyorsa, hizmet sözleşmesi uygulamanızın ServiceBehaviorAttribute.InstanceContextMode örnekleriyle kanal oturumu arasındaki ilişkiyi belirtmek için özelliğini kullanabilirsiniz.

Örneğin, özelliği olarak ve Allowed ServiceBehaviorAttribute.InstanceContextMode özelliği olarak ayarlandıysa ServiceContractAttribute.SessionMode InstanceContextMode.PerSession, istemci aynı hizmet nesnesine yinelenen çağrılar yapmak için güvenilir oturumları destekleyen bir bağlama kullanabilir.

Oturum, uygulama modelinin kullandığı kanal düzeyinde bir kavram olduğundan, bir sözleşmedeki numaralandırma ile kanallar ve belirli hizmet nesneleri arasındaki ilişkiyi ServiceBehaviorAttribute.InstanceContextMode denetleyen özellik arasında SessionMode bir etkileşim vardır.

Aşağıdaki tabloda, gelen kanalın güvenilir oturumları desteklemesinin veya hizmetin özellik ile ServiceBehaviorAttribute.InstanceContextMode özelliğin değerlerinin bileşimine bağlı olarak güvenilir oturumları ServiceContractAttribute.SessionMode desteklememesi sonucunu gösterir.

InstanceContextMode Değeri Gerekli İzin Verildi Notallowed
PerCall - Oturumlu kanal ile davranış: Bir oturum ve System.ServiceModel.InstanceContext her çağrı için.
- Oturumsuz kanal ile davranış: Özel durum oluşturulur.
- Oturumlu kanal ile davranış: Bir oturum ve System.ServiceModel.InstanceContext her çağrı için.
- Oturumsuz kanal ile davranış: Her çağrı için bir System.ServiceModel.InstanceContext .
- Oturumlu kanalda davranış: Bir özel durum oluşturulur.
- Oturumsuz kanal ile davranış: Her çağrı için bir System.ServiceModel.InstanceContext .
PerSession - Oturumlu kanalla ilgili davranış: Bir oturum ve System.ServiceModel.InstanceContext her kanal için.
- Oturumsuz kanal ile davranış: Özel durum oluşturulur.
- Oturumlu kanalla ilgili davranış: Bir oturum ve System.ServiceModel.InstanceContext her kanal için.
- Oturumsuz kanal ile davranış: Her çağrı için bir System.ServiceModel.InstanceContext .
- Oturumlu kanalda davranış: Bir özel durum oluşturulur.
- Oturumsuz kanal ile davranış: Her çağrı için bir System.ServiceModel.InstanceContext .
Tek - Oturumlu kanalda davranış: Bir oturum ve tüm aramalar için bir oturum System.ServiceModel.InstanceContext .
- Oturumsuz kanal ile davranış: Özel durum oluşturulur.
- Oturumlu kanal ile davranış: Oturum ve System.ServiceModel.InstanceContext oluşturulan her bir tekil için veya kullanıcı tarafından belirtilen tekil için.
- Oturumsuz kanal ile davranış: Oluşturulan her tekil için veya kullanıcı tarafından belirtilen tekil için bir System.ServiceModel.InstanceContext .
- Oturumlu kanalda davranış: Bir özel durum oluşturulur.
- Oturumsuz kanal ile davranış: Oluşturulan her tekil için veya kullanıcı tarafından belirtilen tekil için bir System.ServiceModel.InstanceContext .

Şunlara uygulanır