我创建了一个wcf库,并且有1个主机和2个客户端连接到它。
在我的WCF中,我有代码存储从客户端A发送到WCF的消息:
private string CustReady; //whether the customer is ready
我有一个set方法,如下所示
public string sendReady(string s_Ready)
{
CustReady = s_Ready;
}
//gets state of customer (POS)
public string getReady()
{
return CustReady;
}
客户端A使用sendReady方法并传入一个字符串,然后存储在CustReady中。在客户端B中,单击按钮时会触发getReady方法,并检索CustReady变量中保存的字符串。当我在我的WCF中围绕这两种方法设置断点时,客户端A正确地存储信息,但是当我按下客户端B上的按钮时,它返回null。我想知道是否有人知道为什么?
由于
答案 0 :(得分:3)
两个客户端正在使用主机的两个实例,因此它们不共享变量。您必须将变量设置为static或将服务器上InstanceContext的ServiceBehivorAttribute设置为InstanceContextMode.Single(如果未将ConcurrencyMode设置为Multiple,则一次只能处理一个连接到服务。)
[ServiceBehavior(
ConcurrencyMode=ConcurrencyMode.Multiple,
InstanceContextMode=InstanceContextMode.Single
)]
public class BehaviorService : IBehaviorService
{
//Snip
}