2010-06-16 2 views
0

Je rencontre des problèmes lors de la configuration du service WCF pour l'exécution en mode session. En tant que test, j'ai écrit ce service simple:Problème lors de la configuration de WCF pour utiliser la session

[ServiceContract] 
public interface IService1 
{ 
    [OperationContract] 
    string AddData(int value); 
} 

[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession)] 
internal class Service1 : IService1,IDisposable 
{ 
    private int acc; 

    public Service1() 
    { 
     acc = 0; 
    } 

    public string AddData(int value) 
    { 
     acc += value; 
     return string.Format("Accumulator value: {0}", acc); 
    } 

    #region IDisposable Members 

    public void Dispose() 
    {   
    } 

    #endregion 
} 

J'utilise la liaison Net.TCP avec la configuration par défaut avec un indicateur de session fiable activé. Pour autant que je sache, un tel service devrait fonctionner sans problème en mode session. Mais, le service s'exécute comme dans le mode par appel - chaque fois que j'appelle AddData, le constructeur est appelé avant d'exécuter AddData et Dispose() est appelé après l'appel. Des idées pour lesquelles cela pourrait se produire? Peut-être qu'il me manque quelque chose?

note: Je ne sais pas si c'est lié, mais j'utilise VS2008 pour l'exécuter.

Mise à jour: J'ai remarqué here que wcftestclient ne maintient pas la session avec les clients - peut-être que c'était mon problème. En effet, c'était le problème. La connexion au service depuis le simple client de la console a confirmé que le service fonctionne comme il se doit.

Répondre

1

Essayez nécessitant un SessionMode lors de la définition du ServiceContract:

[ServiceContract(SessionMode = SessionMode.Required)] 
public interface IService1 
{ 
    [OperationContract] 
    string AddData(int value); 
} 
+0

essayé. le service fonctionne toujours comme en mode PerCall. – Michael

+1

@Michael: juste pour être sûr, vous utilisez un seul proxy et ne le fermez pas entre les appels, oui? – Ozan

+1

@Michael: la case "Démarrer un nouveau proxy" n'est pas cochée? (edit: cette fonctionnalité semble être manquante dans votre version de wcftestclient) – Ozan

Questions connexes