Передать массив JSON в веб-сервис WCF - PullRequest
3 голосов
/ 31 марта 2010

Я пытаюсь передать массив JSON службе WCF. Но это не похоже на работу. Я фактически вытащил массив [GetStudents] из службы и отправил точно такой же массив обратно в службу [SaveStudents], и ничего (пустой массив) не было получено. Массив JSON имеет формат:

[
  {"Name":"John","Age":12},
  {"Name":"Jane","Age":11},
  {"Name":"Bill","Age":12}
]

И контракты имеют следующий формат:

//Contracts
[DataContract]
public class Student{
  [DataMember]public string Name { get; set; }
  [DataMember]public int Age{ get; set; }
}

[CollectionDataContract(Namespace = "")]
public class Students : List<Student>
{
  [DataMember]public Endorsements() { }
  [DataMember]public Endorsements(IEnumerable<Student> source) : base(source) { }
}

//Operations
public Students GetStudents()
{
  var result = new Students();
  result.Add(new Student(){Name="John",12});
  result.Add(new Student(){Name="Jane",11});
  result.Add(new Student(){Name="Bill",12});
  return result;
}

//Operations
public void SaveStudents(Students list)
{
  Console.WriteLine(list.Count); //It always returns zero
}

Есть ли конкретный способ отправки массива в службу REST WCF?

1 Ответ

1 голос
/ 04 апреля 2010

У меня была похожая проблема. Я звонил в службу из браузера, и проблема заключалась в том, что Firefox динамически изменял тип содержимого запроса с «application / json» на «application-json; charset = utf-8». Если вы вызываете сервис из браузера, протестируйте его в браузере, отличном от Firefox, и если это так, вам нужно удалить кодировку из заголовка типа контента запроса

...