Отправка объекта C # в controller webapi

Я пытаюсь передать объект C # на веб-controller api. Api настроен для хранения объектов типа Product, которые отправляются на него. Я успешно добавил объекты с использованием метода Jquery Ajax, и теперь я пытаюсь получить тот же результат на C #.

Я создал простое консольное приложение для отправки запроса на отправку на api:

public class Product { public int Id { get; set; } public string Name { get; set; } public string Category { get; set; } public decimal Price { get; set; } } static void Main(string[] args) { string apiUrl = @"http://localhost:3393/api/products"; var client = new HttpClient(); client.PostAsJsonAsync(apiUrl, new Product() { Id = 2, Name = "Jeans", Price = 200, Category = "Clothing" }); } 

Метод postproduct никогда не вызывается, как отправить этот объект на controller?

Метод, используемый для добавления элементов:

  public HttpResponseMessage PostProduct([FromBody]Product item) { item = repository.Add(item); var response = Request.CreateResponse(HttpStatusCode.Created, item); string uri = Url.Link("DefaultApi", new { id = item.Id }); response.Headers.Location = new Uri(uri); return response; } 

Похоже, вы как-то отключили прием JSON в качестве формата для публикации. Я смог отправить данные на конечную точку и создать новый продукт с помощью application/x-www-form-urlencoded . Вероятно, это ваш запрос jQuery.

Можете ли вы показать свой код конфигурации вашего веб-приложения? Вы меняете форматировщики по умолчанию?

Или вы можете отправить форму из HttpClient. например

  string apiUrl = "http://producttestapi.azurewebsites.net/api/products"; var client = new HttpClient(); var values = new Dictionary() { {"Id", "6"}, {"Name", "Skis"}, {"Price", "100"}, {"Category", "Sports"} }; var content = new FormUrlEncodedContent(values); var response = await client.PostAsync(apiUrl, content); response.EnsureSuccessStatusCode();