3

我有一个 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并且都可以。

需要命名空间似乎很奇怪。

有人对这种行为有解释吗?

4

1 回答 1

0

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

您是否使用程序集或发现来共享您的服务合同?也许您的合同一方面已过期并且需要刷新(通过重新运行发现或重新部署共享程序集)。

于 2013-01-11T21:00:31.537 回答