Problema de configuração do WCF para usar a sessão
-
27-09-2019 - |
Pergunta
Estou tendo problemas em configurar o serviço WCF para executar no modo de sessão. Como teste, escrevi este serviço simples:
[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
}
Estou usando a ligação net.tcp com a configuração padrão com o sinalizador de sessão confiável ativado. Até onde eu entendo, esse serviço deve ser executado sem problemas no modo de sessão. Mas, o serviço é executado como no modo de chamada - cada vez que eu chamo AddData, o construtor é chamado antes de executar o addData e o descarte () é chamado após a chamada. Alguma idéia de por que isso pode estar acontecendo? Talvez eu esteja perdendo alguma coisa?
Nota: Não sei se está relacionado, mas estou usando o VS2008 para executar isso.
Atualização: Eu notei aqui Esse wcftestclient não mantém a sessão com os clientes - talvez tenha sido o meu problema. Na verdade, esse era o problema. Conectar -se ao serviço do cliente simples do console confirmou que o serviço funciona como deveria.
Solução
Tente exigir um modo de sessão ao definir o ServiceContract:
[ServiceContract(SessionMode = SessionMode.Required)]
public interface IService1
{
[OperationContract]
string AddData(int value);
}