【发布时间】:2016-08-08 15:21:26
【问题描述】:
好的,这是一个奇怪的问题。
为了测试这个问题,我有一个这样的端点:
[HttpPut]
public string Put(object value)
{
return value != null ? "ok" : "fail";
}
当直接向它抛出数据时,值对象总是变成我向它抛出的 JSON(如预期的那样)。但是,我正在开发的应用程序要求我通过一个网关,该网关通过验证一些标头等来增加呼叫的安全性。
当通过转发到我的端点的网关时,一切似乎都还可以,直到调用主体达到一定大小(显然 471 个字符是可以的,472 不是)然后值对象是 null (因此该方法返回“失败”)。
所有这一切让我相信 GW 将正文截断到一定大小,因此使其无效 JSON 并且值对象变为 null。但是在与网关的提供商交谈后,他们告诉我他们已经对其进行了测试,这不可能是问题。
真正奇怪的部分来了
为了进一步解决这个问题,我添加了一个 BeginRequest 监听器,如下所示:
context.BeginRequest += Application_BeginRequest;
我只在拦截器中添加了一行用于调试目的(查看主体是否被截断):
HttpContext.Current.Request.SaveAs("c:\\test.txt", true);
添加此行后,一切都像魅力一样工作,所有调用都会通过(无论大小)并且值永远不会null。我再次尝试删除该行,我们又回到了原始问题,即它在一定大小时失败。
到底发生了什么事
我真的需要一些关于如何继续调试此问题的建议。
【问题讨论】:
标签: json rest http debugging asp.net-web-api2