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 管理集状态代码策略未按预期工作的主要内容,如果未能解决你的问题,请参考以下文章

Azure NSG 未按预期工作

AuthZForce PDP 未按预期运行

QGraphicsView 滚动条策略未按预期工作

ReactiveCocoa - concat flatten 策略未按预期工作

AWS API Gateway 限制未按预期工作

针对特定用户的 PostgreSQL RLS 策略未按预期工作并适用于所有用户