Domanda

Ho problemi nella configurazione di servizio WCF per l'esecuzione in modalità di sessione. Come test ho scritto questo semplice servizio:

[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
}

Sto usando vincolante Net.Tcp con la configurazione di default con la bandiera affidabile sessione abilitato. Per quanto ho capito, tale servizio dovrebbe funzionare senza problemi in modalità sessione. Ma, viene eseguito il servizio come in ogni modo di chiamata - ogni volta che chiamo AddData, costruttore viene chiamato prima di eseguire AddData e Dispose () viene chiamato dopo la chiamata. Tutte le idee perché questo potrebbe accadere? Forse mi manca qualcosa?

nota:. Non so se si riferisce, ma sto usando VS2008 per eseguire questo

Aggiornamento: Ho notato qui che WcfTestClient non lo fa mantenere la sessione con i clienti - forse era il mio problema. In effetti questo era il problema. La connessione al servizio da semplice client console ha confermato che il servizio funziona come dovrebbe.

È stato utile?

Soluzione

Prova che richiede un SessionMode per la definizione del ServiceContract:

[ServiceContract(SessionMode = SessionMode.Required)]
public interface IService1
{
  [OperationContract]
  string AddData(int value);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top