我在配置 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 不与客户端保持会话 - 也许这是我的问题。确实这就是问题所在。从简单的控制台客户端连接到服务确认服务正常工作。