我目前正在尝试发布到具有这样的控制器的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中放置一个断点时,它甚至没有响应我从控制台应用程序发送的请求。
那是为什么?
答案 0 :(得分:3)
在操作方法参数之前添加[FromBody]
属性,如下所示:
public IHttpActionResult PostNewUser([FromBody] UserModel data)
还要为json字符串内容指定内容类型,如下所示:
stringContent = new StringContent(output, Encoding.UTF8, "applicaiton/json")