我正在构建一个WCF应用程序,我需要在会话之间保留服务的实例状态。 我的服务实现如下:
[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)]
public class Service : IService {
private int i;
public int Increment() {
return i++;
}
}
我需要在每个会话之间保留i变量的值。但是,InstanceContextMode.PerSession
似乎与InstanceContextMode.PerCall
做同样的事情。
因此,如果在客户端应用程序中多次调用Increment()
,我每次都会得到0:
var serviceClient = new ServiceClient();
MessageBox.Show(serviceClient.Increment()); // 0
MessageBox.Show(serviceClient.Increment()); // 0
我使用InstanceContextMode.Single
测试了相同的内容并且它按预期工作,但此行为不符合我的需要,因为无法在客户端之间保留服务的实例状态。