【发布时间】:2016-05-02 14:19:42
【问题描述】:
我正在编写一个 C# 表单应用程序以将一些数据发布到 Web 服务。发布的对象已正确添加到数据库中,但客户端未收到 true 的 SuccessStatusCode。
这里是webservice函数:
[Route("Postitem")]
[ResponseType(typeof(Item))]
public async Task<IHttpActionResult> PostItem(Item item)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.items.Add(item);
await db.SaveChangesAsync();
var data = CreatedAtRoute("DefaultApi", new { id = item.Id }, item);
return data;
}
这里是客户端PostItem函数:
public async Task PostItem()
{
var item = new Item(1, 0, "Posted Item Name 6", "Posted Item Data");
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(baseAddress);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.PostAsJsonAsync("api/Postitem", item);
if (response.IsSuccessStatusCode)
{
}
}
}
response.IsSuccessStatusCode 的值为false。
这是响应的字符串值:
"StatusCode: 500, ReasonPhrase: '内部服务器错误', 版本: 1.1, 内容:System.Net.Http.StreamContent,标头:\r\n{\r\n Pragma: 无缓存\r\n 缓存控制:无缓存\r\n 日期:2016 年 1 月 26 日,星期二 格林威治标准时间 03:37:09\r\n 服务器:Microsoft-IIS/10.0\r\n X-AspNet-版本: 4.0.30319\r\n X-Powered-By: ASP.NET\r\n Content-Length: 1174\r\n Content-Type: application/json; charset=utf-8\r\n 过期:-1\r\n}"
客户端如何正确判断对象是否正确发布?
【问题讨论】:
-
不太确定你在找什么——你的服务不应该在成功的情况下抛出异常......有很多关于如何调试 ASP.Net 站点的资源——很明显你不是在寻找教程...
-
没有抛出异常,数据添加成功,但是客户端没有收到成功状态码。
-
我认为返回OK(数据)
-
StatusCode: 500 仍然返回 OK(data)。
标签: c# asp.net-web-api2 httpresponse