我正在IIS中托管我的第一个WCF服务。我有两个方法,1在WCF服务上设置字符串变量,另一个用于检索它。使用的界面是:
[OperationContract]
string ReturnText();
[OperationContract]
void SetText(string s);
使用BasicHttpBinding。使用来自客户端的调试器逐步调试服务会显示使用SetText正确设置字符串的值,但是当我立即执行返回文本时,字符串将返回null。
我可能知道一个简单的,但我认为在打开服务连接和关闭它之间保留了WCF服务上的所有值。
为什么Set和Gets之间的值丢失了?
答案 0 :(得分:7)
默认情况下,会话是无会话的,实例是每次调用。参见
http://msdn.microsoft.com/en-us/library/ms731193.aspx
对于某些启动器信息,但为了在调用之间建立状态,您需要在服务器上使用PerSession或Single instancing模式,而在前一种情况下,配置绑定以支持会话(以便两者呼叫可以作为同一会话连接的一部分而相关联。)
答案 1 :(得分:4)
感谢Brian,该链接包含我需要的信息。我添加了
[ServiceContract(SessionMode = SessionMode.Required)]
到我的界面/合同,它现在可以自动生效了!
答案 2 :(得分:2)
对于易失性值,您也可以将值存储在静态变量中。只要不回收/重新启动wcf主机
,这也会在调用之间保持其状态