Erreur d'affichage JSON Web API 2 : La demande de l'entité des médias de type 'text/plain' n'est pas pris en charge pour cette ressource
J'ai cette classe :
public class MyClass
{
public MyClass() { Secret = "Don't tell me"; }
public string Name { get; set; }
public int Age { get; set; }
public string Description { get; set; }
private string Secret { get; set; }
}
Et cette API WEB méthode :
//POST api/fixture
public HttpResponseMessage Post(MyClass value)
{
return new HttpResponseMessage(HttpStatusCode.Created);
}
J'ai mis de l'API Web de retour JSON au lieu de XML et je n'ai pas fait d'autres changements à la configuration par défaut. Je suis en train de tester cette méthode avec la RESTClient extension de Firefox. Voici ma requête :
POST localhost:XXXX/api/fixture
Content-Type: application/json
Accept: application/json
Content-Length: 60
{
value : { "Name":"Cosby","Age":"13","Description":"OK" }
}
Cependant j'obtiens cette erreur :
{"Message":"La demande de l'entité des médias de type 'text/plain' n'est pas pris en charge pour cette ressource.","ExceptionMessage":"Pas de MediaTypeFormatter est disponible à la lecture d'un objet de type "MyClass" à partir du contenu avec les médias de type 'text/plain'.","ExceptionType":"Le Système De.Net.Http.UnsupportedMediaTypeException","StackTrace":" au Système.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent contenu, Type de type IEnumerable
1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n at System.Net.Http.HttpContentExtensions.ReadAsAsync(HttpContent content, Type type, IEnumerable
1 formateurs, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n au Système.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage demande, Type de type IEnumerable`1 formateurs, IFormatterLogger formatterLogger, CancellationToken cancellationToken)"}
Edit:
Je ne comprends pas parce qu'il semble que la méthode n'est même pas appelé. Si je debug, je vois que le constructeur est appelé et aucune autre méthode est appelée. Aucune exception n'est levée.
J'ai été sur ce problème pour beaucoup de temps maintenant. J'ai constaté que ce problème se produit généralement lorsque le Type de Contenu n'est pas réglée correctement, mais il ne semble pas être mon cas puisque la demande n'est même pas traitée.
Une idée ?
Grâce
localhost
est. De toute façon, vous êtes positif que vos exception se produit avec ce message? L'exception fait sonner comme vous êtes à poster un type de contenu de text/plain
plutôt que application/json
.
OriginalL'auteur tobiak777 | 2014-09-19
Vous devez vous connecter pour publier un commentaire.
Vous envoyiez le type de contenu de
application/json
dans le corps, plutôt que comme un en-tête. Si votre requête POST a défaut text/plain. Le RestClient extension a un endroit séparé pour entrer dans l'en-tête.Si jamais vous avez une question à propos de ce qui est envoyé sur le réseau, vérifiez l'onglet Réseau dans votre navigateur, outils de développement, ou de l'utilisation d'un outil tel que Fiddler pour voir le trafic réseau.
OriginalL'auteur mason
À l'intérieur de FACTEUR, vous avez seulement besoin de changer le réglage de l'application/json. Consultez l'image ci-dessous.
OriginalL'auteur Azlan Jamal
Utilisation Facteur de tester votre site Web API, le configurer pour avoir en-tête content-type: application/json Puisque c'est une requête POST, vous avez à mettre les premières données json.
OriginalL'auteur Json
Vous avez probablement besoin d'ajouter le contenu suivant dans votre HTTP demande en-tête:
OriginalL'auteur Baqer Naqvi
J'ai eu ce problème quand j'avais un contrôleur qui avait deux modèles différents dans les paramètres. La méthode Post est à l'aide d'un modèle qui n'a pas été spécifié dans le builder.EntitySet La façon dont j'ai résolu ce problème est de créer un lire et écrire des contrôleurs. C'est le long des lignes de CQRS. Bien que l'API spécifications deviennent de plus en désordre.. merci à dieu pour Swagger!
OriginalL'auteur LastTribunal