我有一个到 WCF c# 服务器的 linux c++ 客户端(通过 gSOAP)。WCF c# 服务包含执行某些操作的对象列表。每次我在服务上调用某个函数时,都会创建新对象,对该对象执行操作,并且该对象会进入服务列表。最后,我在服务上调用另一个函数,该函数循环遍历列表中的所有对象并对它们执行另一个调用。这在 c# 上按预期工作,具有客户端和服务纯 WCF。
它通过 gSOAP 工作不同。每次我通过 gSOAP 调用服务上的第一个函数时,都会执行该操作并更新列表。但每次都是新服务。所以基本上我每次都在处理新服务。我不会序列化/反序列化对象本身,将它放在 inux 端。
任何想法如何解决这个问题?
在 c# 方面,我有类似的东西(跳过了不必要的细节)
类服务:IService
{
列表列表 = 新列表();
无效 func1(int i)
{
Class1 c = 新 Class1(i);
c.create();
列表。添加(c);
}
无效函数2()
{
foreach(列表中的 Class1 c)
{
c.close();
}
}
}
在 gSOAP 方面,我有类似的东西
代理服务(端点);
service.func1(1);
service.func1(2);
//...
服务.func2();
正如我所说的问题是:执行 func2() 时,它在空列表上运行,这意味着代理服务的 gSOAP 对象不包含 c# 服务对象。
救命,救命!
附言。找到了解决方案:容器制作“静态”就可以了。