首页 > 解决方案 > WCF 服务 - 防止生成作为回应

问题描述

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

我已经在 ServiceBehaviorAttribute 上阅读了有关 IgnoreExtensionDataObject 的内容,但这并没有帮助。我怎样才能摆脱元素作为回应?

谢谢。

标签: c#.netwcfsvcutil.exe

解决方案


该字段主要用于解决服务端和客户端定义的数据合约版本不一致的问题。为此,我们需要在客户端或服务器上添加 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; }
}

当客户端获取该值并配置此对象时,它不会丢失之前的 Description/Price 字段值。ExtensionDataObject 字段将用于维护值。
官方文件。
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/forward-compatible-data-contracts
简单来说,我们不需要关心这个字段。如果有什么我可以帮忙的,请随时告诉我。


推荐阅读