1

我定义了一些 DataContracts,一个是从另一个继承而来的。这些不是确切的类,但有这样的东西:

[DataContract]
public class BaseModel 
{
    [DataMember]
    public String Id {get;set;}
}

[DataContract]
public class MyModel : BaseModel 
{
    [DataMember]
    public String Name {get;set;}
}

我正在使用带有 basicHTTPbinding 的 WCF 将数据从服务器移动到客户端。当我使用 fiddler 查看正在发送的数据时,它正在做一些奇怪的事情。

在返回的原始数据中,当我检查 Name 属性时,我可以看到“Name”后面跟着数据。对于 Id 属性,我看到“Id http://schema.datacontract.org/2004/07/MyService ”,后跟数据。我只看到基类字段的 schema.datacontract.org 部分。为什么只有继承的字段才能获得该架构部分?两个类都在同一个命名空间中。我不希望它出现在任何属性上,因为它会显着增加我的响应。反正我可以把它关掉吗?

4

1 回答 1

1

我更改了每个 [DataContract] 以包含具有相同值的命名空间,例如

[DataContract(Namespace = "http://schemas.datacontract.org/2004/07/MyCode.Service")]

这解决了我的问题。不知道为什么需要指定它,因为它们已经在同一个命名空间中,但它确实有效。

于 2013-10-02T09:39:58.513 回答