2010-03-31 6 views
3

J'essaie de transmettre un tableau JSON à un service WCF. Mais cela ne semble pas fonctionner. J'ai effectivement tiré un tableau [GetStudents] sur le service et renvoyé exactement le même tableau au service [SaveStudents] et rien (tableau vide) n'a été reçu. Le tableau JSON est du format:Passez un tableau JSON à un service Web WCF

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

Les contrats sont au format suivant:

//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 
} 

Il y une certaine façon d'envoyer un tableau à un service REST WCF?

Répondre

1

J'ai eu un problème similaire. J'appelais le service à partir d'un navigateur et le problème était que Firefox changeait dynamiquement le type de contenu de demande de 'application/json' à 'application-json; charset = utf-8'. Si vous appelez le service à partir d'un navigateur, testez-le avec un navigateur autre que firefox et si tel était le cas, vous devez supprimer le jeu de caractères de l'en-tête de type de contenu demandé

+0

@Ash: C'était mon problème exact. Le service fonctionne à partir de Google Chrome mais échoue dans FireFox. Est-ce qu'il y a une solution pour cela: je n'ai aucun contrôle sur le service REST! – Tawani

+0

Je n'ai pas trouvé de solution côté client. est le type xml (application/xml) une option? – Ash

+0

Mon service WCF 4.0 fonctionne même avec Firefox en ajoutant que (selon FireBug). Peut-être que c'était cassé en 3.5? – CTarczon