ServiceContractAttribute.SessionMode Özellik
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
Oturumlara izin verilip verilmeyeceğini veya gerekli olup olmadığını alır veya ayarlar.
public:
property System::ServiceModel::SessionMode SessionMode { System::ServiceModel::SessionMode get(); void set(System::ServiceModel::SessionMode value); };
public System.ServiceModel.SessionMode SessionMode { get; set; }
member this.SessionMode : System.ServiceModel.SessionMode with get, set
Public Property SessionMode As SessionMode
Özellik Değeri
SessionMode Oturumlara izin verilip verilmeyeceğini veya gerekli olup olmadığını gösteren bir.
Özel durumlar
Değer değerlerden SessionMode biri değildir.
Örnekler
Aşağıdaki hizmet sözleşmesi, yapılandırılmış bağlamaların hizmet uygulamalarıyla SampleDuplexHello
etkileşim kurarken oturumları kullanmasını gerektirir.
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
SessionMode Uç noktalar arasındaki oturumları destekleyen bağlamalar gerektirmek için özelliğini kullanın. Oturum, iki veya daha fazla uç nokta arasında değiş tokuş edilen bir ileti kümesini ilişkilendirmenin bir yoludur. Hizmetiniz kanal oturumlarını destekliyorsa, hizmet sözleşmesi uygulamanızla kanal oturumu arasındaki ilişkiyi belirtmek için özelliğini kullanabilirsiniz InstanceContextMode . Bağlama oturumları desteklemiyorsa, bir özel durum oluşturulur.
Örneğin, özelliği olarak ve SessionMode.Required InstanceContextMode özelliği olarak ayarlanırsa SessionMode PerSession, istemciler aynı hizmet nesnesine yinelenen çağrılar yapmak için aynı bağlantıyı kullanabilir.
Oturumlar ve hizmet örnekleri hakkında daha fazla bilgi için bkz. Oturumları ve Oturumları Kullanma, Oturum Açma ve Eşzamanlılık.
Not
Oturumları destekleyen bir kanal, bir hizmet örneğinin belirli bir oturumla varsayılan ilişkilendirmesini destekler. Bununla birlikte, farklı oturum uygulamaları oturum tabanlı boyutlandırma denetimine ek olarak farklı özellikleri destekler. WCF, oturumlu uygulama davranışı sağlamak için kullanabileceğiniz dört tür oturum sağlar; her oturum türü, olduğu oturum türüne özgü ek davranış sağlar.
, System.ServiceModel.Channels.SecurityBindingElement iletişimin her iki ucunun da bir şifreleme ve/veya dijital imza işlemi üzerinde anlaşmaya vardığı güvenlik oturumlarını destekler; tüm iletiler bu özel güvenli konuşmayla ilişkilendirilir. Daha fazla bilgi için bkz . Hizmetlerin Güvenliğini Sağlama. Örneğin, System.ServiceModel.WSHttpBindinghem güvenlik oturumları hem de güvenilir oturumlar için destek içeren , varsayılan olarak yalnızca iletileri şifreleyen ve dijital olarak imzalayan güvenli bir oturum kullanır.
, System.ServiceModel.NetTcpBinding tüm iletilerin yuva düzeyindeki bağlantı oturumuyla ilişkilendirildiğinden emin olmak için TCP/IP bağlantıları tarafından sunulan oturumları destekler.
System.ServiceModel.Channels.ReliableSessionBindingElementWS-ReliableMessaging belirtimini uygulayan , iletilerin sırayla ve tam olarak bir kez teslim edilen güvenilir oturumlar için destek sağlayarak konuşma sırasında iletiler birden çok düğüm arasında hareket ettiğinde bile güven sağlar. Daha fazla bilgi için bkz . Güvenilir Oturumlar.
MSMQ System.ServiceModel.NetMsmqBinding veri birimi oturumları sağlar. Daha fazla bilgi için bkz. WCF'de kuyruklar.
Özelliğin ayarlanmasının SessionMode sözleşmenin gerektirdiği oturum türünü belirtmediğini, yalnızca bir oturum gerektirdiğini unutmayın.