我有一个wcf双工服务和两个客户端。情景是,client1向wcf提交请求,wcf将请求存储在DB.client2中处理从DB获取的请求,并将状态发送到wcf服务,从而通知客户端1状态。 client1的回调地址存储在一个静态变量中.client2通知wcf,但wcf不通知client1。任何解决方案,请。 在此先感谢回调客户端不工作在wcf wsdualhttpbinding
service.cs:
public class Service1 : IService1
{
static List<IServiceCallback> list = new List<IServiceCallback>();
static IServiceCallback Callbck;
public bool GetData(int value)
{
int i = 0;
string s= string.Format("You entered: {0}", value);
Callbck = OperationContext.Current.GetCallbackChannel<IServiceCallback>();
i++;
list.Add(Callbck);
Ret("sss...");
return true;
}
public void Ret(string s)
{
foreach (var c in list)
{
Callbck.display(s);
}
}
}
client1.cs:
class Program
{
static void Main(string[] args)
{
InstanceContext instance = new InstanceContext(new Handler());
Service1Client client = new Service1Client(instance);
bool res = client.GetData(123);
if (res)
Console.WriteLine("true");
}
}
public class Handler :IService1Callback
{
public void display(string s)
{
Console.WriteLine(s);
}
}
client2.cs:
class Program
{
static void Main(string[] args)
{
int i = 0;
i++;
Display();
}
public static void Display()
{
Console.WriteLine("hello");
InstanceContext context = new InstanceContext(new Handlerss());
Service1Client client = new Service1Client(context);
client.Ret("done");
}
}
class Handlerss : IService1Callback
{
public void display(string s)
{
Console.WriteLine(s);
}
}
没有包括我保存到Db的真实场景。遇到与此示例相同的概率因此发布此代码 – sow 2012-01-31 10:47:06
这些运行在同一台机器上或不同的机器上? – 2012-02-01 08:57:49
yes.both即使在设置instancecontextmode = single之后也在同一台机器上 – sow 2012-02-01 14:30:13