Web API - 调试显示令人困惑的信息

时间:2016-02-11 12:25:29

标签: c# json debugging asp.net-web-api web-config

我已经通过我的Web API获得了帮助herehere,但现在我想我已经到达了大峡谷的边缘......幸运的是我的老板执行了推迟了,但判决还没有减刑。所以任何建议都是全心全意的,特别是因为我的新手身份尚未改变。

所以,代码如第二个链接问题所示(可以在这里发布,但我认为这将是多余的)。我已经使用SQL链接更正了错误,因此在尝试调用过程,设置调试环境并开始测试时,它现在不会崩溃。

我正在调试时在Chrome中使用ARC扩展程序发送POST请求(在有效负载中使用JSON)并发出错误消息:Error in API with code as intended

但是,在使用答案和评论中的建议更改代码后:

namespace NA.Controllers
{
    public class NotesController : ApiController
    {

        [Route("AddNote")]
        [HttpPost]
        public HttpResponseMessage PostNote()
        {
            HttpResponseMessage response = new HttpResponseMessage();
            StreamReader stream = new StreamReader(HttpContext.Current.Request.InputStream);
            string jsonData = stream.ReadToEnd();
            System.IO.File.WriteAllText(@"C:\temp\BLZ_content.txt", jsonData);
            return response;
        }

    }
}

我获得了成功,正确的响应并且json被保存到文件中。所以API一般工作正常。反过来,这意味着我的反序列化json(或者只是从正文中捕获它)的代码不是。

1 个答案:

答案 0 :(得分:0)

您无法从刚刚创建的响应对象中读取传入数据。您必须从请求中读取它:

string jsonData = new StreamReader(Request.InputStream).ReadToEnd();

然后你可以将它记录到文件中,看看你是否得到了你期望得到的东西。如果这样做,则可以手动将jsonData反序列化为List,如下所示:

List<Note> response = JsonConvert.DeserializeObject<List<Note>>(jsonData);