我有在配置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运行此

更新:我注意到是wcftestclient不与客户维持会话 - 也许这是我的问题。事实上,这就是问题所在。连接到从简单的控制台客户服务确认服务的工作,因为它应该。

有帮助吗?

解决方案

尝试定义的ServiceContract当需要SessionMode:

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