是否需要WCF DataContract命名空间

时间:2013-01-11 18:34:28

标签: wcf datacontract

我有一个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并且两者都没问题。

命名空间是必需的。

有没有人对此行为有解释?

1 个答案:

答案 0 :(得分:0)

如您所述,它应默认为tempuri命名空间。我已经多次这样做了,所以我知道它有效。我的猜测是传入的数据正在使用命名空间http//mysite.co.uk,因此导致它失败。 DataContract的名称空间必须与SOAP消息中使用的名称空间匹配。

您是否正在使用程序集或发现来共享您的服务合同?也许您的合同在一端已经过时,需要刷新(通过重新运行发现或重新部署共享程序集)。