185 votes

WebAPI - Paramètres Put/Post multiples

J'essaie d'afficher plusieurs paramètres sur un contrôleur WebAPI. Un paramètre provient de l'URL, et l'autre du corps. Voici l'URL : /offers/40D5E19D-0CD5-4FBD-92F8-43FDBB475333/prices/

Voici le code de mon contrôleur :

public HttpResponseMessage Put(Guid offerId, OfferPriceParameters offerPriceParameters)
{
    //What!?
    var ser = new DataContractJsonSerializer(typeof(OfferPriceParameters));
    HttpContext.Current.Request.InputStream.Position = 0;
    var what = ser.ReadObject(HttpContext.Current.Request.InputStream);

    return new HttpResponseMessage(HttpStatusCode.Created);
}

Le contenu du corps est en JSON :

{
    "Associations":
    {
        "list": [
        {
            "FromEntityId":"276774bb-9bd9-4bbd-a7e7-6ed3d69f196f",
            "ToEntityId":"ed0d2616-f707-446b-9e40-b77b94fb7d2b",
            "Types":
            {
                "list":[
                {
                    "BillingCommitment":5,
                    "BillingCycle":5,
                    "Prices":
                    {
                        "list":[
                        {
                            "CurrencyId":"274d24c9-7d0b-40ea-a936-e800d74ead53",
                            "RecurringFee":4,
                            "SetupFee":5
                        }]
                    }
                }]
            }
        }]
    }
}

Vous avez une idée de la raison pour laquelle la liaison par défaut n'est pas capable de se lier à l'adresse de l'utilisateur. offerPriceParameters argument de mon contrôleur ? Il est toujours défini comme nul. Mais je suis capable de récupérer les données du corps à l'aide de la fonction DataContractJsonSerializer .

J'essaie également d'utiliser le FromBody de l'argument mais cela ne fonctionne pas non plus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X