Question

Je ne parviens pas à configurer le service WCF pour exécuter en mode session. Comme un test, j'ai écrit ce service simple:

[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 le drapeau de la session fiable activée. Pour autant que je comprends, ce service devrait fonctionner sans problème en mode session. Mais, le service fonctionne comme en mode par appel - chaque fois que j'appelle AddData, constructeur est appelé avant d'exécuter AddData et Dispose () est appelée après l'appel. Toutes les idées pour lesquelles cela pourrait se produire? Peut-être que je manque quelque chose?

Note:. Je ne sais pas si elle est liée, mais je me sers VS2008 pour exécuter ce

Mise à jour: Je l'ai remarqué que wcftestclient ne maintenir la session avec les clients - peut-être était mon problème. En effet, c'était le problème. Connexion au service du client console simple a confirmé que le service fonctionne comme il se doit.

Était-ce utile?

La solution

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

[ServiceContract(SessionMode = SessionMode.Required)]
public interface IService1
{
  [OperationContract]
  string AddData(int value);
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top