Exporter (0) Imprimer
Développer tout

ServiceContractAttribute.SessionMode, propriété

Mise à jour : novembre 2007

Obtient ou définit si les sessions sont autorisées, ne sont pas autorisées ou sont requises.

Espace de noms :  System.ServiceModel
Assembly :  System.ServiceModel (dans System.ServiceModel.dll)

public SessionMode SessionMode { get; set; }
/** @property */
public SessionMode get_SessionMode()
/** @property */
public  void set_SessionMode(SessionMode value)

public function get SessionMode () : SessionMode
public function set SessionMode (value : SessionMode)

Valeur de propriété

Type : System.ServiceModel.SessionMode
SessionMode qui indique si les sessions sont autorisées, non autorisées ou requises.

ExceptionCondition
ArgumentOutOfRangeException

La valeur ne fait pas partie des valeurs System.ServiceModel.SessionMode.

Utilisez la propriété SessionMode pour requérir des liaisons qui prennent en charge des sessions entre des points de terminaison. Une session est une façon de faire correspondre un ensemble de messages échangés entre deux points de terminaison ou plus. Si votre service prend en charge les sessions de canal, vous pouvez donc utiliser la propriété InstanceContextMode pour spécifier la relation entre les instances de votre implémentation de contrat de service et la session de canal. Si une liaison ne prend pas en charge les sessions, une exception est levée.

Par exemple, si la propriété SessionMode a la valeur SessionMode.Required et la propriété InstanceContextMode a la valeur PerSession, les clients peuvent utiliser la même connexion pour faire des appels répétés au même objet du service.

Pour plus d'informations sur les sessions et instances de service, consultez Utilisation de sessions et Sessions, instanciation et accès concurrentiel.

Aa344790.alert_note(fr-fr,VS.90).gifRemarque :

Un canal qui prend en charge les sessions prend en charge l'association par défaut d'une instance de service avec une session particulière. Toutefois, différentes implémentations de session prennent en charge des fonctionnalités différentes en plus des contrôles d'instance basés sur une session. WCF fournit quatre types de session que vous pouvez utiliser pour fournir un comportement d'application de session ; chaque type de session fournit le comportement supplémentaire spécifique au type de session.

  1. System.ServiceModel.Channels.SecurityBindingElement prend en charge des sessions de sécurité dans lesquelles les deux extrémités de communication ont convenu d'un chiffrement et/ou d'un processus de signature numérique ; tous les messages sont mis en corrélation avec cette conversation sécurisée spécifique. Pour plus d'informations, consultez Sécurisation de services. Par exemple, System.ServiceModel.WSHttpBinding qui contient la prise en charge des sessions de sécurité et des sessions fiables utilise par défaut uniquement une session sécurisée qui chiffre et signe numériquement les messages.

  2. System.ServiceModel.NetTcpBinding prend en charge les sessions exposées par les connexions TCP/IP pour garantir que tous les messages sont corrélés par la session de connexion au niveau du socket.

  3. System.ServiceModel.Channels.ReliableSessionBindingElement qui implémente la spécification WS-ReliableMessaging fournit la prise en charge des sessions fiables dans lesquelles les messages sont remis en ordre et exactement une fois, ce qui permet d'être confiant même lorsque les messages passent par plusieurs nœuds pendant la conversation. Pour plus d'informations, consultez Sessions fiables.

  4. System.ServiceModel.NetMsmqBinding fournit des sessions de datagramme MSMQ. Pour plus d'informations, consultez Files d'attente dans Windows Communication Foundation.

Souvenez-vous que la définition de la propriété SessionMode ne spécifie pas le type de session que le contrat requiert mais uniquement qu'il requiert un type de session.

Le contrat de service suivant requiert que les liaisons configurées utilisent des sessions lors de l'interaction avec les implémentations de service SampleDuplexHello.

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

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 3.5, 3.0

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft