Pregunta

Tengo problemas en la configuración de servicio WCF para funcionar en el modo de sesión. Como prueba de escribir este servicio 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
}

Estoy utilizando Net.TCP unión con la configuración por defecto con la bandera sesión fiable habilitado. Por lo que yo entiendo, dicho servicio debe funcionar sin problemas en modo de sesión. Sin embargo, se ejecuta el servicio como en el modo de llamada por - cada vez que llamo AddData, constructor es llamado antes de ejecutar AddData y botar () se llama después de la llamada. Alguna idea de por qué esto esta pasando? Tal vez me estoy perdiendo algo?

nota:. No sé si está relacionado, pero estoy usando VS2008 para ejecutar este

Actualización: Me he dado cuenta de aquí que WcfTestClient no lo hace mantener la sesión con los clientes - tal vez era mi problema. De hecho ese era el problema. Conexión al servicio del cliente simple consola confirmó que el servicio funciona como debiera.

¿Fue útil?

Solución

Trate de que requiere un SessionMode al definir el ServiceContract:

[ServiceContract(SessionMode = SessionMode.Required)]
public interface IService1
{
  [OperationContract]
  string AddData(int value);
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top