WCF服务-防止在响应中生成<ExtensionData />

时间:2019-11-28 16:28:03

标签: c# .net wcf svcutil.exe

我有使用svcutil.exe生成的合同,该工具会自动生成ExtensionData字段。 问题是,在服务xml响应中,存在ExtensionData字段 <ExtensionData />

我已经阅读了有关ServiceBehaviorAttribute上IgnoreExtensionDataObject的内容,但这没有帮助。 如何消除响应中的元素?

谢谢。

1 个答案:

答案 0 :(得分:0)

此字段主要用于解决服务器和客户端定义的数据协定版本之间的不一致。为此,我们需要在客户端或服务器上添加类型为ExtensionDataObject的属性。这样,在服务器和客户端传输期间数据不会丢失。
请参考以下服务器端数据合同。

    [DataContract(Namespace ="ABCD")]
    public class Product
    {
        [DataMember]
        public int ID { get; set; }
        [DataMember]
        public string Name { get; set; }
        [DataMember]
        public string Description { get; set; }
        [DataMember]
        public decimal Price { get; set; }
}

客户端。

    [DataContract(Namespace ="ABCD")]
    public class Product:IExtensibleDataObject
    {
        [DataMember]
        public int ID { get; set; }
        [DataMember]
        public string Name { get; set; }
        public ExtensionDataObject ExtensionData { get; set; }
        //[DataMember]
        //public string Description { get; set; }
        //[DataMember]
        //public decimal Price { get; set; }
}

当客户端获取值并配置此对象时,它将不会丢失先前的“描述/价格”字段值。 ExtensionDataObject字段将用于维护值。
正式文件。
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/forward-compatible-data-contracts
简而言之,我们不需要关心这一领域。请随时告诉我是否有什么我可以帮助的。