带有 Restful API 和循环引用问题的 WCF 服务
Posted
技术标签:
【中文标题】带有 Restful API 和循环引用问题的 WCF 服务【英文标题】:WCF service with Restful API and circular reference issue 【发布时间】:2018-05-06 21:13:51 【问题描述】:我有一个设计对象
[DataContract(IsReference = true)]
public class Entity : IEntity
.....
当我设置 IsReference = true 时,如果我通过 Restful 使用 json 格式的 WCF 服务,我会出现异常,因为 DataContractJsonSerializer 不支持 IsReference 属性。
如果我去掉IsReference = true,当Restful with Json消费WCF服务或WCF SOAP消费WCF服务时,会出现循环引用问题。
那么我该如何解决这个问题呢?
已解决
我找到了一个用 Newtonsoft JsonSerializer 替换 DataContractJsonSerializer 的解决方法。它将解决此问题。
我在https://itq.nl/replacing-wcf-datacontractjsonserializer-with-newtonsoft-jsonserializer/关注文章
【问题讨论】:
【参考方案1】:虽然标准的 Microsoft JSON 序列化程序确实不支持这种情况,但 Json 支持它。
让序列化处理像这样的自引用对象:
WebAPI 休息服务器:
在反序列化之前,您可能需要将以下解析器附加到您的设置中:
settings.ContractResolver = new DynamicContractResolver();
public class DynamicContractResolver : DefaultContractResolver
protected override JsonProperty CreateProperty(System.Reflection.MemberInfo member, MemberSerialization memberSerialization)
var r = base.CreateProperty(member, memberSerialization);
r.Ignored = false;
return r;
还有客户:
JsonConvert.SerializeObject(theObject, new JsonSerializerSettings ReferenceLoopHandling = ReferenceLoopHandling.Serialize )
道德:不要使用微软的 JSON 序列化器。
【讨论】:
我正在使用带有 Restfull 的 WCF 服务器,那么我如何配置 HttpConfiguration ?以上是关于带有 Restful API 和循环引用问题的 WCF 服务的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring Boot 的 RESTful API 中的循环依赖
设计带有一长串查询参数的 RESTful 查询 API [关闭]
使用 Spring Security 和 Redis 对带有 Java 配置的 RESTFul api 进行基于 Cookie 的身份验证