À l'aide de violon pour envoyer une requête POST à WebApi

Je suis en train d'écrire un simple WebApi programme, à l'aide de C#. (Je sais MVC assez bien, mais je suis nouveau sur WebApi.) Il contient un des Vendeurs de contrôleur (VendorsController.cs), qui contient un "getvendor" action comme le montre l'exemple de code ci-dessous:

[RoutePrefix("api/vendors")]
public class VendorsController : ApiController
{
    [Route("getvendor"), HttpPost]
    public TAPUser GetVendor([FromBody] string username)
    {
        Int32 userid = -1;

    ...

Les routes sont configurés comme suit:

//Web API routes
config.MapHttpAttributeRoutes();

config.Routes.MapHttpRoute(
    name: "DefaultApi",
    routeTemplate: "api/{controller}/{id}",
    defaults: new { action = RouteParameter.Optional, id = RouteParameter.Optional
);

Je suis en utilisant un violon pour tester le programme. Tout d'abord, j'ai couru le code ci-dessus, sans [FromBody] et utilisé un violon pour envoyer une requête POST avec le nom de l'utilisateur dans l'url comme ceci:
http://localhost:60060/api/vendors/getvendor?username=tapuser

Cela a bien fonctionné. tapuser était passé comme argument à GetVendor et l'action renvoyé le résultat escompté.

Ensuite, j'ai ajouté [FromBody] et de mettre username=tapuser dans le corps de la requête. Cette fois, quand j'ai envoyé la demande, tapuser n'obtenez pas passé à l'action. L'argument de GetVendor() était null. J'ai essayé de variations sur le corps de la requête telles que { "username": "tapuser" }, mais il n'aide pas. J'ai essayé de changer l'itinéraire de diverses manières, aussi, de telles que la modification de routeTemplate à "api/{controller}/{action}/{id}". Qui n'a pas aidé non plus. Je suis sûr que je suis absent quelque chose de très simple, mais je n'ai juste pas le voir.

Avez-vous vous assurer que vous avez spécifié le type de contenu application/json dans l'en-tête de demande? Pourriez-vous partager votre fiddler capture d'écran/code si toujours pas résolu.
Note de côté: vue Brute de demande de Fiddler que le texte serait mieux que de l'image
POST localhost:60060/api/fournisseurs/getvendor HTTP/1.1 User-Agent: Fiddler Content-Type: application/json de l'Hôte: localhost:60060 Content-Length: 16 nom d'utilisateur=tapuser
Je viens de poster la vue brute. Désolé pour le manque de mise en forme.

OriginalL'auteur Tim | 2016-03-01