Azure API管理器POST请求/响应限制65,535

时间:2018-07-26 20:24:10

标签: azure asp.net-web-api2 azure-api-management

我在Azure云服务的API管理器中包装了一个应用程序API。无论出于什么原因,当我发送1000条或更多记录的JSON有效负载(转换为大约200k个字符)时,请求都会被丢弃。没有跟踪,没有日志记录只是删除,但是如果我截断有效负载,一切都会按预期工作。如果我将相同的1000条记录有效载荷发送到基础服务中(而不是通过API管理器),则所有工作均按预期进行。使用API​​M时是否有请求或返回大小限制?

1 个答案:

答案 0 :(得分:0)

我的基础服务是匹配内部响应代码,如果它们相同,则应用于总体返回代码。我的内部代码均为404“未找到项目”。 Azure API管理器将404视为错误并丢弃较大的有效负载。这是他们的支持。在较小的有效载荷上,它将返回404代码和消息,但是在较大的有效载荷上,它将被丢弃。我尝试返回404的原因是,返回有效载荷中的每个记录都包含一个状态。如果状态为混合状态,则返回207,以获取混合状态,但如果它们都相同,则返回200(找到)和404(未找到),则整个服务将内部状态作为整体状态返回。这是糟糕的设计。我的有效负载包括搜索数据库中不存在的项目,因此返回404作为总体状态,每条记录的消息均指示“未找到”。 APIM放弃了返回响应,转而使用通用的404网址未找到响应。根据结果​​将内部服务切换为仅返回200或207,并且一切正常。

{
    "ProcessId": "2",
    "Code": 404,
    "Message": "Could not resolve token.",
    "Token": "@!!!@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  }, 
{
    "ProcessId": "2",
    "Code": 404,
    "Message": "Could not resolve token.",
    "Token": "@!!!@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
  }, 

总体返回码设置为404,APIM删除了响应。在这种情况下,我通过将总返回码设置为200来解决此问题。