我有一个到 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# 服务对象。
救命,救命!
附言。找到了解决方案:容器制作“静态”就可以了。