Azure API 管理集状态代码策略未按预期工作
Posted
技术标签:
【中文标题】Azure API 管理集状态代码策略未按预期工作【英文标题】:Azure API Management Set Status Code Policy not working as Expected 【发布时间】:2018-05-24 12:15:16 【问题描述】:我正在使用设置状态代码策略,其中我将返回状态代码和相应的状态原因, 如果我尝试点击 api,则在运行时和开发人员门户中获取原因,我能够接收带有预期原因消息的状态代码,但是如果我从托管服务调用,我只会得到状态代码,我没有得到相关原因消息
这并不存在于我拥有的所有 APIM 实例中,仅在特定实例中
如果我从开发者门户尝试,我会得到状态原因
注意:状态原因中的消息变量是在运行时从命名值中获取的
代码:
<when condition="@(!14==14))">
<return-response>
<set-status code="410" reason="@(context.Variables.GetValueOrDefault<string>("Message"))" />
<set-header name="Cache-Control" exists-action="override">
<value>max-age=0, no-cache, no-store, must-revalidate, proxy-revalidate</value>
</set-header>
</return-response>
</when>
邮递员电话: 没有收到仅代码的原因 ref:黄色高亮框
开发者控制台:黄色高亮框同时显示代码和消息
【问题讨论】:
【参考方案1】:由于您在不同的 APIM 实例之间获得不同的行为,因此问题似乎很可能是在未返回原因值的实例上未正确设置“消息”变量。
我无法完全复制这一点。当使用像 410 这样的已知状态代码时,我测试的所有 APIM 实例似乎都将“Gone”设置为未指定的原因。但是由于状态码未知,没有返回任何原因。我没有发现新旧 APIM 实例之间的行为有任何差异。
【讨论】:
你是对的,即使我通过创建一个新实例进行了测试并且它工作正常;在 APIM 实例中,它在特定 APIM 的开发人员门户中不起作用,我可以 c 我在命名值中设置的消息以上是关于Azure API 管理集状态代码策略未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章