L'API Web ASP.NET effectue la négociation de contenu par défaut - renverra XML ou JSON ou un autre type en fonction de l'en- Accept
tête. Je n'ai pas besoin / je veux de cela, y a-t-il un moyen (comme un attribut ou quelque chose) de dire à l'API Web de toujours renvoyer JSON?
asp.net-mvc
asp.net-web-api
Borek Bernard
la source
la source
GlobalConfiguration.Configuration.Formatters
Réponses:
Prise en charge uniquement de JSON dans l'API Web ASP.NET - LA BONNE FAÇON
Remplacez IContentNegotiator par JsonContentNegotiator:
Implémentation de JsonContentNegotiator:
la source
Accept
XML obtiendra JSON et n'obtiendra pas un 406 ?Accept
tête.GlobalConfiguration...Clear()
réellement.Effacez tous les formateurs et rajoutez le formateur Json.
ÉDITER
Je l'ai ajouté à l'
Global.asax
intérieurApplication_Start()
.la source
Philip W avait la bonne réponse mais pour plus de clarté et une solution de travail complète, modifiez votre fichier Global.asax.cs pour qu'il ressemble à ceci: (Remarquez que j'ai dû ajouter la référence System.Net.Http.Formatting au fichier généré par stock)
la source
Cela efface le formateur XML et donc le format JSON par défaut.
la source
Inspiré par l'excellente réponse de Dmitry Pavlov, je l'ai légèrement modifiée pour pouvoir brancher le formateur que je voulais appliquer.
Crédit à Dmitry.
la source
Si vous voulez faire cela pour une seule méthode, déclarez votre méthode comme retournant
HttpResponseMessage
au lieu deIEnumerable<Whatever>
et faites:ce code est pénible pour les tests unitaires, mais c'est également possible comme ceci:
la source
Cela a des en-têtes corrects. Semble un peu plus élégant.
la source
Vous pouvez utiliser dans WebApiConfig.cs:
la source
pour ceux qui utilisent OWIN
devient (dans Startup.cs):
la source