Почему мой веб-API не реагирует на мои запросы?

#c# #asp.net #.net #asp.net-web-api

#c# #asp.net #.net #asp.net-web-api

Вопрос:

В настоящее время я пытаюсь опубликовать в своем веб-API, у которого есть подобный контроллер.

 public class ProductController : ApiController
    {


        [HttpPost]
        [AcceptVerbs("POST")]
        public IHttpActionResult PostNewUser(UserModel data)
        {

            if (data.Username == null)
            {
                return NotFound();
            }

            return Ok();
        }
    }
  

Из консольного приложения C #, использующего HttpClient
делаю это.

 var User = new UserModel
            {
                Username = "admin",
                Password = "password",
                HWID_Hash = "password"
            };

            string output = JsonConvert.SerializeObject(User);

            var client = new HttpClient();
            var stringContent = new StringContent(output);

            var response = await client.PostAsync($"http://localhost:51838/api/product/PostNewUser", stringContent);
            if (response.ReasonPhrase.ToLower() == "not found")
            {
                Console.WriteLine("User doesn't exist.");
            }

            if (response.ReasonPhrase.ToLower() == "ok")
            {
                Console.WriteLine("Welcome.");
            }
  

Но когда я устанавливаю точку останова в веб-API, он даже не реагирует на запрос, который я отправляю из консольного приложения.

Почему это?

Комментарии:

1. Добавьте [FromBody] атрибут перед параметром метода действия следующим образом: public IHttpActionResult PostNewUser([FromBody] UserModel data) . Кроме того, вам не нужен AcceptVerbs("POST") атрибут.

2. По-прежнему не реагирует.

3. клиент. PostAsync возвращает StatusCode = UnsupportedMediaType

4. Попробуйте инициализировать var stringContent = new StringContent(output, Encoding.UTF8, "applicaiton/json");

5. Отлично! Я опубликовал ответ

Ответ №1:

Добавьте [FromBody] атрибут перед параметром метода действия следующим образом:

 public IHttpActionResult PostNewUser([FromBody] UserModel data)
  

Кроме того, укажите тип содержимого для содержимого строки json следующим образом:

 stringContent = new StringContent(output, Encoding.UTF8, "applicaiton/json")