我的Web API为什么不响应我的请求?

时间:2019-04-23 15:48:50

标签: c# asp.net .net asp.net-web-api

我目前正在尝试发布到具有这样的控制器的Web API。

public class ProductController : ApiController
    {


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

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

            return Ok();
        }
    }

使用HttpClient从C#控制台应用程序 这样做。

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.");
            }

但是当我在Web API中放置一个断点时,它甚至没有响应我从控制台应用程序发送的请求。

那是为什么?

1 个答案:

答案 0 :(得分:3)

在操作方法参数之前添加[FromBody]属性,如下所示:

public IHttpActionResult PostNewUser([FromBody] UserModel data)

还要为json字符串内容指定内容类型,如下所示:

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