【发布时间】:2019-04-23 15:48:50
【问题描述】:
我目前正在尝试发布到具有这样一个控制器的 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 中设置断点时,它甚至不会响应我从控制台应用程序发送的请求。
这是为什么呢?
【问题讨论】:
-
在操作方法参数之前添加
[FromBody]属性,如下所示:public IHttpActionResult PostNewUser([FromBody] UserModel data)。此外,您不需要AcceptVerbs("POST")属性。 -
仍然没有反应。
-
client.PostASync 返回
StatusCode = UnsupportedMediaType -
尝试初始化
var stringContent = new StringContent(output, Encoding.UTF8, "applicaiton/json"); -
太棒了!我已经发布了答案
标签: c# asp.net .net asp.net-web-api