Отправить большие данные JSON в WCF Rest Service - PullRequest
0 голосов
/ 27 мая 2010

У меня есть веб-страница клиента, которая отправляет большой объект json прокси-серверу в том же домене, что и веб-страница.

Затем прокси (обработчик ashx) перенаправляет запрос в службу отдыха WCF. Использование объекта WebClient (стандартный объект .net для выполнения http-запроса)

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 голосов
/ 02 февраля 2011

Я бы тоже настроил maxStringContentLength и maxBytesPerRead. Также убедитесь, что независимо от того, какую настройку привязки вы настроили, вы фактически используете ее во всех нужных местах.

Этот поток довольно хорошо фиксирует все, что может пойти не так, когда вы имеете дело с большой строкой при вводе сообщения WCF, поэтому я буду следовать приведенным здесь указаниям: Отправка больших строк в веб-службу WCF

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...