c# - WCF 服务 - 防止生成作为回应
问题描述
我有使用 svcutil.exe 生成的合同,该工具会自动生成 ExtensionData 字段。问题是,在服务 xml 响应中,ExtensionData 字段存在
<ExtensionData />
。
我已经在 ServiceBehaviorAttribute 上阅读了有关 IgnoreExtensionDataObject 的内容,但这并没有帮助。我怎样才能摆脱元素作为回应?
谢谢。
解决方案
该字段主要用于解决服务端和客户端定义的数据合约版本不一致的问题。为此,我们需要在客户端或服务器上添加 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
简单来说,我们不需要关心这个字段。如果有什么我可以帮忙的,请随时告诉我。
推荐阅读
- hyperledger-fabric - 我可以更改关系中定义的参数吗
- laravel - Laravel:如何从好友列表中隐藏用户自己的个人资料?
- svg - 复制 SVG 后,SVG 在 Safari 中显示不正确
- c++ - CppCon 2018,Nicolai Josuttis:为什么这些被解释为迭代器?
- java - RESTFUL 码头服务返回 403 错误 java
- bash - 空(空白)命令的bash完成
- javascript - $('#formID').submit 和 $('#formID')[0].submit 有什么区别?
- android - 错误:不兼容的类型:任务
无法转换为 Uri - vba - MS Word:替换用户表单中的书签文本而不是使用 VBA 添加
- r - 从 mlr 中的重采样函数中检索模型