我有一个传递给WCF服务的对象。然后在服务器上,服务修改对象的某些属性,并返回一个int。
在客户端,调用服务后,对象的属性所做的更改不存在。
我的单元测试工作正常。但是当在服务上运行时,会出现问题。
有关如何解决此问题的任何想法?
答案 0 :(得分:2)
当您通过服务边界传递某些内容时,它将通过值而不是通过引用传递,因此在服务器上进行的任何更改都不会传播到您从客户端传递的对象。因此,您希望将修改后的对象返回给客户端。如果还需要返回int,则可以创建一个包含int和更改对象的包装类。
答案 1 :(得分:0)
@jodogger,也许我错过了一些东西,但如果服务返回一个int,它肯定不会改变你的对象。
问题是你的对象实际上从未实际到过服务器。由于WCF的断开连接特性,您必须传递值byval而不是byref。
如果您必须更改WCF服务中的值,则需要执行以下操作:
myObject = WCFService.MethodName(myObject);
这实际上并不是同一个回来的对象,但是你将使用该对象的新值来破坏旧对象。
请注意,您需要在界面的DataContract部分以及实现本身中创建要返回的对象。