DefaultContractResolver的实现导致404



在我们的应用程序中,我们使用Newtonsoft.Json来反序列化和序列化视频提要对象。我们之前有Newtonsoft.Json 3.5。运行正常。但最近,我们将Newtonsoft.Json.dll升级到4.5,因为TweetSharp 2.3依赖于它。这导致我们的视频馈送页面返回404。我缩小了问题范围,似乎这段代码导致了问题

JsonResult = JsonConvert.SerializeObject(
                    collection, 
                    Formatting.Indented,
                    new JsonSerializerSettings { ContractResolver = new GetClipContractResolver(IncludeMedia) });
class GetClipContractResolver : DefaultContractResolver
    {
        private bool IncludeMedia { get; set; }
        public GetClipContractResolver(bool includeMedia)
        {
            this.IncludeMedia = includeMedia;
        }
        protected override JsonProperty CreateProperty(JsonObjectContract contract, System.Reflection.MemberInfo member)
        {
            // remove Clip.Media
            if (member.DeclaringType == typeof(KenticoWhiteLabelCore.Core.VideoDataServiceConsumer.VideoDataClip))
            {
                if (member.Name == "Media" && IncludeMedia == false)
                {
                    return null;
                }
            }
            return base.CreateProperty(contract, member);
        }
    }

JsonConvert.SerializeObject工作正常,但JsonProperty CreateProperty()重写方法导致了问题。我把它移走了,一切都很好。有什么想法吗?我们不能不重写CreateProperty()。关于如何修复的建议?为什么它会在Newtonsoft.Json 4.5突然停止工作?

问题已解决。版本4.5具有不同的方法签名。

相关内容

  • 没有找到相关文章

最新更新