2009-09-09 5 views
1

Dans un previous thread l'un des répondants a déclaré que l'utilisation de wsHttpBinding utilisé une session. Puisque je travaille dans un environnement IIS en cluster, devrais-je le désactiver? Pour autant que je sache, les sessions ne fonctionnent pas dans un cluster.La liaison WCF -wsHttpBinding utilise une session?

Si je dois désactiver ceci, comment je vais le faire?

Répondre

5

C'était probablement moi :-) Par défaut, votre service et la reliure utilisée détermineront si une session entre en jeu ou non.

Si vous ne faites rien, et utilisez wsHttpBinding, vous aurez une session. Si vous voulez éviter cela, vous devez:

  • passer à un autre protocole/liant le cas échéant
  • décorer vos contrats de service avec un attribut SessionMode

Si vous voulez arrêter un service de jamais à l'aide d'une session, vous pouvez le faire comme ceci:

[ServiceContract(Namespace="....", SessionMode=SessionMode.NotAllowed)] 
interface IYourSession 
{ 
.... 
} 

et vous pouvez décorer votre classe de service avec les instance context mode appropriés attributs:

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)] 
class YourService : IYourService 
{ 
    .... 
} 

Avec ceci, vous devriez être à peu près du bon côté et ne pas avoir de séances quelconques.

Marc

+0

Oui, c'était vous. Merci! –

+2

+1 pour des informations utiles par défaut sur wsHttpBinding. L'interface devrait-elle lire 'interface IYourService' au lieu de' IYourSession'? J'essayais de relier les deux échantillons ensemble :) Merci! –

+0

Comment (pour wshttpbinding) la relation entre SessionMode.NotAllowed et maxConcurrentSessions de serviceThrottling? Peut-être que maxConcurrentSessions indique qu'il n'est pas nécessaire de valider le contexte de sécurité des proxys clients et que les points SessionMode.NotAllowed sont des services sans état. – Gerard

Questions connexes