【问题标题】:Web API - debugging shows confusing informationWeb API - 调试显示令人困惑的信息
【发布时间】:2016-02-11 12:25:28
【问题描述】:

我已经在我的 Web API 方面获得了 herehere 的帮助,但现在我想我已经到了大峡谷的边缘......幸运的是,我被老板处决的时间被推迟了,但是句子尚未通勤。因此,任何建议都非常感谢,特别是因为我在这些东西中的新手状态还没有改变。

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

我在调试时使用 Chrome 中的 ARC 扩展发送一个 POST 请求(负载中有 JSON),我收到一条错误消息:

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

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 代码(或只是从正文中捕获它)不是。

【问题讨论】:

  • 我不知道你的编程技术有多好,但在这一点上我会尽可能地回去。您收到一个空异常,因为没有收到数据。但在什么时候?是否有数据到达您的 API 中的某个点,或者流甚至完全不存在?目前你在错误的前面搜索,看看电缆是否连接,然后朝另一个方向走。
  • 你的 Json 应该在 HttpContext.Current.Request 中。
  • @YoshSynergi 对代码进行了一些更改,并在此处合并了所有建议。 '确定数据命中 API(json 由所述 API 保存在文本文件中)。编辑帖子以反映当前的事态。

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


【解决方案1】:

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

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

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

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

【讨论】:

  • 您的解决方案对我不起作用...我使用了上面评论中的@tede24 建议并结合谷歌搜索我现在确定我正在接收 POST 消息,因为 JSON 被保存在一份文件。所以90%的成功。现在让我们解决剩下的 90% 的问题。
  • 那么现在有什么问题呢?使用 JsonConvert 的反序列化代码是否适合您?如果不是,那是什么问题。
猜你喜欢
  • 2020-04-30
  • 1970-01-01
  • 2020-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-27
相关资源
最近更新 更多