私は1つのwcfデュプレックスサービスと2つのクライアントを持っています。シナリオは、クライアント1がwcfに要求を送信し、wcfがそれをDBに保管するシナリオです.client2はDBから取得した要求を処理し、その状態をwcfサービスに送信してクライアント1に状況を通知する必要があります。 client1のコールバックアドレスは静的変数に格納されます.client2はwcfに通知しますが、wcfはclient1に通知しません。任意のソリューションpls。 事前のおかげで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に保存するという私の実際のシナリオは含まれていません。この例で同じprobが発生しましたので、このコードを投稿してください – sow
これらは同じマシンで実行されていますか、別のマシンで実行されていますか? –
はい。両方ともinstancecontextmode = singleに設定しても、同じマシン上にあります – sow