WCF变量生命周期/状态

时间:2008-10-26 17:56:56

标签: wcf iis

我正在IIS中托管我的第一个WCF服务。我有两个方法,1在WCF服务上设置字符串变量,另一个用于检索它。使用的界面是:

[OperationContract]
string ReturnText();

[OperationContract]
void SetText(string s);

使用BasicHttpBinding。使用来自客户端的调试器逐步调试服务会显示使用SetText正确设置字符串的值,但是当我立即执行返回文本时,字符串将返回null。

我可能知道一个简单的,但我认为在打开服务连接和关闭它之间保留了WCF服务上的所有值。

为什么Set和Gets之间的值丢失了?

3 个答案:

答案 0 :(得分:7)

默认情况下,会话是无会话的,实例是每次调用。参见

http://msdn.microsoft.com/en-us/library/ms731193.aspx

对于某些启动器信息,但为了在调用之间建立状态,您需要在服务器上使用PerSession或Single instancing模式,而在前一种情况下,配置绑定以支持会话(以便两者呼叫可以作为同一会话连接的一部分而相关联。)

答案 1 :(得分:4)

感谢Brian,该链接包含我需要的信息。我添加了

[ServiceContract(SessionMode = SessionMode.Required)]

到我的界面/合同,它现在可以自动生效了!

答案 2 :(得分:2)

对于易失性值,您也可以将值存储在静态变量中。只要不回收/重新启动wcf主机

,这也会在调用之间保持其状态