/ / Faire que mon service WCF retourne json - asp.net, wcf

Faire mon retour de service WCF json - asp.net, wcf

J'essaie de faire en sorte que ma méthode de service WCF renvoie l'objet JSON, mais cela ne fonctionne pas. Lorsque j'ouvre dans un navigateur Web, il affiche xml.

Comment puis-je faire en sorte que cette méthode retourne JSON?

J'ai inséré [WebGet (ResponseFormat = WebMessageFormat.Json)], mais cela n’a pas aidé.

[WebGet(ResponseFormat = WebMessageFormat.Json)]
protected override IEnumerable<KeyValuePair<string, SampleItem>> OnGetItems()
{
// TODO: Change the sample implementation here
if (items.Count == 0)
{
items.Add("A", new SampleItem() { Value = "A" });
items.Add("B", new SampleItem() { Value = "B" });
items.Add("C", new SampleItem() { Value = "C" });
}
return this.items;
}

Réponses:

4 pour la réponse № 1

Pour que cela fonctionne, vous devez l'héberger avec le webHttpBinding et le WebServiceHostFactory dans votre web.config et service "s *.svc fichier.

Vous n’avez pas montré de configuration web ou autre, donc je ne peux pas vraiment dire ce que vous faites. Mais le format de réponse JSON dans le WebGet Cet attribut est uniquement pris en charge dans les services WCF de style REST. le WebGet Cet attribut est ignoré pour toutes les liaisons basées sur SOAP, par exemple. basicHttpBinding, wsHttpBinding, netTcpBinding etc.

Pour plus d'informations sur les services WCF de style REST, consultez la Centre de développement WCF REST et découvrez comment configurer et utiliser des services WCF de style REST.

Mettre à jour: afin que votre fichier * .svc fonctionne correctement en tant que service REST utilisant le WebGet attribut et renvoie JSON, vous devez vous assurer de spécifier la fabrique d’hôte de service correcte:

<%@ServiceHost Language="C#" Service="YourService"
Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>

En spécifiant le WebServiceHostFactory, vous demandez au moteur d’exécution WCF d’utiliser ce service en tant que service REST. Tous les autres éléments doivent alors se mettre automatiquement en place.


0 pour la réponse № 2

Avez-vous également défini le comportement WebHttpBehaviour? Sinon, WebGet ne fonctionne pas. Voir MSDN

Et cet attribut s'applique aux opérations de service,méthodes pas simples. Vous ne montrez pas le reste de vos services, mais les exemples que j'ai vus en utilisant WebGet avaient cet attribut dans l'interface (contrat de service).