【问题标题】:Web Api 2 Object sizeWeb Api 2 对象大小
【发布时间】: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


    【解决方案1】:

    结果在第 3 方 GW 中仍然存在问题。现在正在尝试解决问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 2014-02-27
      • 2021-02-01
      • 2018-06-29
      • 2015-08-10
      • 1970-01-01
      相关资源
      最近更新 更多