Comment puis-je extraire les valeurs de corps d'une requête HTTP POST dans une API Web ASP.NET ValueProvider?

Je veux envoyer une requête HTTP POST avec le corps contenant de l'information, c'est un simple article de blog, rien de fantaisie.

J'ai lu ici que lorsque vous souhaitez lier un type complexe (c'est à dire un type qui n'est pas stringint etc) dans l'API Web, une bonne approche est de créer un modèle de liaison personnalisé.

J'ai un modèle de liaison personnalisé (BlogPostModelBinder) qui à son tour utilise une Valeur personnalisée Fournisseur (BlogPostValueProvider). Ce que je ne comprends pas, c'est que comment et où dois-je être en mesure de récupérer les données à partir du corps de la requête dans le BlogPostValueProvider?

À l'intérieur du modèle de classeur c'est ce que je pensait être la bonne façon pour par exemple récupérer le titre.

public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
{
   ...
   var title= bindingContext.ValueProvider.GetValue("Title");
   ...
}

tandis que le BlogPostValueProvider ressemble à ceci:

 public class BlogPostValueProvider : IValueProvider
 {
    public BlogPostValueProvider(HttpActionContext actionContext)
    {
       //I can find request header information in the actionContext, but not the body.
    }

    public ValueProviderResult GetValue(string key)
    {
       //In some way return the value from the body with the given key.
    }
 }

Cela pourrait être résolues dans un moyen plus facile, mais depuis que je suis en explorant le Web API, il serait bien de le faire fonctionner.

Mon problème est tout simplement que je ne trouve pas où le corps de la requête est stockée.

Merci pour les conseils!

source d'informationauteur Jim Aho