2010-06-10 98 views
0

我创建了一个WCF服务,我希望它在来自客户端的调用之间保持状态。我想做到这一点,最简单的方法是增加该属性的服务:因为这是应该在客户端代理的生命(或超时在极端情况下,保持一个单独的服务活为每一个客户如何维护WCF服务中的每个客户端状态?

[ServiceBehavior(InstanceContextMode = InstanceContextMode.PerSession)] 

案件)。我还添加了一个跟踪用户输入列表的测试函数,并在服务的整个生命周期内将所有输入字符串串起来。

当我在由visual studio生成的测试客户端中运行此操作时,我发现我用来保存过去数据的列表将在每次调用时重置。我还需要做些什么来保持每个会话的状态?

回答

2

好吧,明白了。我正在使用BasicHttpBinding,它不支持每个会话实例。我把它切换成wsHttpBinding,并且一切都很顺利。

+2

它可能工作,但它通常被认为是“黑客” - 只要有可能就试图在服务器后端保持无状态和/或存储状态。不要依赖会话 - 太多可能会出错的事情,并会破坏您的系统。 – 2010-06-10 05:27:36