.net 自定义对象返回为";“空的”;来自WCF?
在我的WCF服务返回中明确填充了“空”实例化对象后,WCF应该返回给我一个“空”实例化对象是出于什么原因 例如,一个简单的.net 自定义对象返回为";“空的”;来自WCF?,.net,wcf,.net,Wcf,在我的WCF服务返回中明确填充了“空”实例化对象后,WCF应该返回给我一个“空”实例化对象是出于什么原因 例如,一个简单的OperationContract方法: response.Client = new Client(); response.Client.ID = 99; return response; 返回一个“空”客户机对象(在客户机接收端),并且所有字段要么为空,要么为零。但是,就在响应之前,如果我检查response.Client.ID,它将填充99 更糟糕的是,我有一个erro
OperationContract
方法:
response.Client = new Client();
response.Client.ID = 99;
return response;
返回一个“空”客户机对象(在客户机接收端),并且所有字段要么为空,要么为零。但是,就在响应之前,如果我检查response.Client.ID,它将填充99
更糟糕的是,我有一个error对象,我这样填充:
response.Errors.Add(new CodedError(Errors.ErrorCodes.LOGIN_AUTHENTICATION_ERROR));
但是,我可以看到接收端的错误列表吗 您的对象是标记为[Serializable]还是[DataContract]?您需要将对象标记为一个或另一个
WCF只知道如何通过网络传递原语或可序列化对象。客户端代理是最新的吗?我见过当合同发生变化时,客户机没有更新以反映变化。如果有人遇到这个问题,我已经找到了解决办法。由于业务需求,我已经用
[Serializable]
和[DataContract]
标记了我的自定义类,这似乎是非法的,可能从.NET 3.5 SP1开始
我有一个朋友,他在.NET3.5SP1之前发送具有这两个属性的WCF对象,并且工作正常。有趣
仅供参考,我只是简单地使用了[Serializable]
,它通过我的对象图正确发送。我需要这个来实现xml序列化
这是一个痛苦的问题,但很高兴它现在终于起作用了……我也有同样的问题。我已经更改了服务器端对象上的名称空间,尽管我已经更新了服务引用配置,但仔细看,名称空间是旧的名称空间,因此,尽管fiddler确认数据正确地通过线路传输,但数据没有传递到我的客户机对象。删除并重新添加服务引用确实起到了作用。现在可能太晚了,但是对于这个特定的问题有一个简单的解决方法。至少有人会觉得这很有用 我有两个不同名称空间的项目
[DataContract]
)[assembly: ContractNamespace("http://www.tempuri.org/MyProject",
ClrNamespace = "MyProject.Business.Entities")]
[assembly: ContractNamespace("http://www.tempuri.org/MyProject",
ClrNamespace = "MyProject.Client.Entities")]
或者,您也可以这样做
[DataContract (Namespace = "http://www.tempuri.org/MyProject")]
public class Account
{}
是的,模型实际上被标记为两者,因为我需要在客户端执行序列化以保存到file.interest。我在这一点上什么都没有。我会再考虑一下的。很难看不到我的模型,但这是一个相当标准的模型,尽管人们会假设,好吧,错误模型是有效的。客户端模型不起作用。模型之间存在不兼容,所以我尝试将其缩减,因为客户端有另一个自定义对象,看看它会起什么作用…Omg。我已经解决了,一个类不能在WCF中同时标记为[DataContract]和[Serializable]。对象结果为空!似乎该对象仅通过[Serializable]传输,这是我所需要的主要属性。谢谢你的帮助,太棒了!很高兴你找到了答案。我学到了一些新东西!:)感谢MattK的评论,正如你所看到的,我计算出了它是什么:(DataMemebers发生了什么事),你是否也将它们更改为[Serializable]?