Posting an eine Web-API mit HttpClient und dem Parameter [FromBody] der Web-API-Methode hat den Wert null.

Ich versuche, mithilfe von HttpClient ein POST an eine Web-API durchzuführen. Wenn ich der Save-Methode der Web-API einen Haltepunkt hinzufüge, ist das [FromBody] -Produkt null. Dies bedeutet, dass die Art und Weise, in der ich das Produkt auf die Web-API übertrage, nicht stimmt. Kann jemand bitte einen Blick auf den folgenden Code werfen und sehen, wo ich falsch liegen könnte. Ich gehe davon aus, dass es etwas mit Überschriften und Inhaltstypen zu tun hat.

POST-Aufruf von einem Client-Repository an die Web-API, die das Produktobjekt als JSON weiterleiten soll:

public async Task<Product> SaveProduct(Product product)
{
    using (var client = new HttpClient())
    {
        client.BaseAddress = new Uri("http://localhost:99999/");
        client.DefaultRequestHeaders.Accept.Clear();
        client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

        StringContent content = new StringContent(JsonConvert.SerializeObject(product));
        // HTTP POST
        HttpResponseMessage response = await client.PostAsync("api/products/save", content);
        if (response.IsSuccessStatusCode)
        {
            string data = await response.Content.ReadAsStringAsync();
            product = JsonConvert.DeserializeObject<Product>(data);
        }
    }
    return product;
}

Web API Controller-Methode:

[HttpPost]
[Route("save")]
public IActionResult Save([FromBody]Product product)
{
    if (customer == null)
    {
        return HttpBadRequest();
    }
    _manager.SaveCustomer(product);
    return CreatedAtRoute("Get", new { controller = "Product", id = product.Id }, product);
}

[FromBody] Der Produkt-Produktparameter ist am Ende null.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage