配置WCF以使用会话时遇到问题

时间:2010-06-16 08:31:12

标签: c# wcf wcf-sessions

我在配置WCF服务以在会话模式下运行时遇到问题。作为测试,我写了这个简单的服务:

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

我正在使用Net.TCP绑定,默认配置启用了可靠的会话标志。 据我所知,这种服务应该在会话模式下运行没有问题。 但是,该服务按照每个调用模式运行 - 每次调用AddData时,构造函数在执行AddData之前被调用,并且在调用之后调用Dispose()。 任何想法为什么会这样?也许我错过了什么?

注意:我不知道它是否相关,但我使用的是VS2008来运行它。

更新:我注意到here wcftestclient没有与客户端保持会话 - 也许这是我的问题。确实是那个问题。从简单的控制台客户端连接到服务确认该服务正常工作。

1 个答案:

答案 0 :(得分:1)

在定义ServiceContract时尝试使用SessionMode:

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