Azure APIm策略执行正常但无响应返回问题求助
问题根源
你在backend阶段用send-request(mode="new")调用后端服务后,只是把响应存到了response变量里,但没把这个变量的内容设置成APIM给调用者的响应体,所以返回的负载是空的。默认情况下,当你手动用send-request发起后端调用而不是转发原始请求时,APIM不会自动把这个响应返回给客户端。
修复步骤
修改outbound策略,添加set-body策略,把response变量里的后端响应内容赋值给APIM的出站响应:
<outbound> <!-- 将后端响应体设置为APIM的返回内容 --> <set-body>@(((IResponse)context.Variables["response"]).Body.As<string>())</set-body> <!-- 可选:同步后端响应的状态码和描述 --> <set-status code="@(((IResponse)context.Variables["response"]).StatusCode)" reason="@(((IResponse)context.Variables["response"]).ReasonPhrase)"/> <base/> </outbound>
额外验证建议
- 检查APIM追踪里的
response变量:确认后端服务确实返回了非空的响应内容,排除后端本身返回空的可能。 - 验证令牌解析逻辑:确保
bearerToken变量中提取的令牌路径bearerToken正确,避免因令牌无效导致后端返回空数据。 - 可以在backend的
send-request后加日志,实时查看响应内容:<log-to-eventhub logger-id="你的日志ID">@(((IResponse)context.Variables["response"]).Body.As<string>())</log-to-eventhub>
内容的提问来源于stack exchange,提问作者Andrew Tyson
相关产品推荐
相关产品推荐

