从 azure APIM 调用时,REST API 服务返回空响应正文,状态代码为 200

问题描述 投票:0回答:4

我已在 Azure API 管理中添加了 REST API 服务。我已遵循此链接Azure APIM中给出的所有步骤。 API 在本地运行良好。通过发布的 URL 访问时它也可以工作。

我还添加了 OAuth2.0 安全性,效果很好。

我的问题是当我尝试通过 APIM 发布的 URL 访问操作时,该服务给出响应 200 且内容为空。

有人可以帮忙吗。

azure-active-directory azure-api-management
4个回答
14
投票

当人们无意中删除了顶级策略并删除了适用于所有 api 上的所有操作的主要转发请求策略时,就会出现此问题。 只需单击“添加策略”按钮即可在顶级范围重新添加默认策略。


4
投票

老问题,但我发帖是因为我有一个由不同问题引起的类似问题(空响应):

我得到的回复是空的,因为我在读取回复的策略中有表达式。默认情况下,读取响应会清除它(大概是因为它下面是一个流)。

在这里找到了一些很好的文档:https://learn.microsoft.com/en-us/azure/api-management/api-management-transformation-policies#SetBody

我通过在阅读响应时指定“保留内容”来修复此问题:

JObject responseJobj = null;
if (context.Response.Body != null) 
{ 
    responseJobj = context.Response.Body.As<JObject>(preserveContent: true); 
}

0
投票

如前所述,您已从所有 API 中删除了一些策略规则。 要解决这个问题,

  1. 导航到 Azure 门户中的 API 选项卡
  2. 单击“所有 API”
  3. 单击编辑入站策略
  4. 在后端添加转发请求策略 enter image description here

0
投票
If you add 
<backend>
    <forward-request />
</backend>
it will resolve the issue. this part will forward the request to the url you set as backend service url
© www.soinside.com 2019 - 2024. All rights reserved.