将大型JSON数据发送到WCF Rest Service

时间:2010-05-27 15:59:03

标签: wcf json rest compression

我有一个客户端网页,它将大型json对象发送到与网页相同的域上的代理服务。

然后,代理(ashx处理程序)将请求转发给WCF Rest Service。使用WebClient对象(用于发出http请求的标准.net对象)

JSON通过客户端网页上的jQuery POST成功到达代理。

但是,当代理将此转发给WCF服务时,我收到错误请求 - 错误400

当json数据的大小很小时,不会发生这种情况

WCF服务合同如下所示

[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
CarConfiguration CreateConfiguration(CarConfiguration configuration);

像这样的DataContract

[DataContract(Namespace = "")]
 public class CarConfiguration
 {
        [DataMember(Order = 1)]
        public int CarConfigurationId { get; set; }
        [DataMember(Order = 2)]
        public int UserId { get; set; }
        [DataMember(Order = 3)]
  public string Model { get; set; }
        [DataMember(Order = 4)]
        public string Colour { get; set; }
        [DataMember(Order = 5)]
        public string Trim { get; set; }
        [DataMember(Order = 6)]
        public string ThumbnailByteData { get; set; }
        [DataMember(Order = 6)]
        public string Wheel { get; set; }
        [DataMember(Order = 7)]
        public DateTime Date { get; set; }
  [DataMember(Order = 8)]
  public List<string> Accessories { get; set; }
  [DataMember(Order = 9)]
        public string Vehicle { get; set; }
  [DataMember(Order = 10)]
  public Decimal Price { get; set; }
 }

当ThumbnailByteData字段很小时,一切正常。当它很大时,我得到400错误

我有什么选择?

我已尝试增加MaxBytesRecived配置设置,但这还不够

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我还会调整maxStringContentLengthmaxBytesPerRead。同时确保您设置的任何绑定配置,您实际上在所有正确的位置使用它。

当您在WCF消息输入中处理大字符串时,此线程可以很好地捕获所有可能出错的内容,因此我将遵循此处的指导:Sending large strings to a WCF web service