我有一个WCF客户端和一个WCF服务,
每端都有一个DataContract。我需要命名空间来反序列化客户端上的对象。
即打击不起作用
[DataContract]
public class Framework
{
[DataMember]
public string Name { get; set; }
}
但这样做:
[DataContract(Namespace = "http//mysite.co.uk"]
public class Framework
{
[DataMember]
public string Name { get; set; }
}
这是为什么?我原本以为离开命名空间意味着它们都默认为http://tempuri.org并且两者都没问题。
命名空间是必需的。
有没有人对此行为有解释?
答案 0 :(得分:0)
如您所述,它应默认为tempuri
命名空间。我已经多次这样做了,所以我知道它有效。我的猜测是传入的数据正在使用命名空间http//mysite.co.uk
,因此导致它失败。 DataContract
的名称空间必须与SOAP消息中使用的名称空间匹配。
您是否正在使用程序集或发现来共享您的服务合同?也许您的合同在一端已经过时,需要刷新(通过重新运行发现或重新部署共享程序集)。