【发布时间】:2015-04-10 19:42:59
【问题描述】:
我需要调用一个控制器中定义的 Post 方法,它有一个 JObject 参数。
当我使用 PostAsJsonAsync 或 PostAsync 调用此方法时,我收到 500 错误代码。
下面的代码显示了我是如何调用这个 Post 方法的:
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:54810");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var jsonObject = new JObject();
dynamic json = jsonObject;
json.Add("mytoken", "teste");
json.eventos = new JArray() as dynamic;
dynamic evento = new JObject();
evento.ID = 1;
evento.Latitude = 50;
evento.Longitude = 20;
evento.Local = 30;
json.eventos.Add(evento);
HttpResponseMessage response = await client.PostAsJsonAsync("api/eventocontrole", jsonObject);
response.IsSuccessStatusCode 属性返回 false。
如果我将此参数类型从 JObject 更改为任何其他自定义类(例如,用户、产品、购物车),属性 IsSuccessStatusCode 将返回 true!
我是否错误地使用了 JObject?我不应该使用 JObject 作为参数吗?
澄清一下,我使用 JObject 是因为我需要传递一个对象列表和一个令牌字符串来验证我的请求。
【问题讨论】:
-
您确定您使用 JObject 创建的数据签名与服务器的预期相符吗?检查通过线路传输的实际数据(您已经这样做了,但尚未显示端点签名)。我还将检查从服务器返回的实际错误消息 - 如果您使用 Fiddler 并在调试模式下运行,您应该在 MVC/WebApi 错误消息中获得更多错误信息(最有可能是黄屏死机)。
标签: asp.net-mvc asp.net-web-api json.net http-post restful-url