Azure API管理集状态代码策略未按预期工作

时间:2018-05-24 12:15:16

标签: azure azure-api-management

我正在使用设置状态代码策略,其中我将返回状态代码及其相应的状态原因, 原因是在运行时和开发人员门户网站中获取,如果我尝试点击api我能够收到带有预期原因消息的staus代码但是如果我从托管服务调用我只获取状态代码而我没有得到相关原因消息

这在我所拥有的所有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:黄色突出显示框 enter image description here

开发者控制台: 黄色突出显示框同时显示代码和消息 enter image description here

1 个答案:

答案 0 :(得分:0)

由于您在APIM的不同实例之间获得了不同的行为,因此问题似乎很可能是&#34;消息&#34;变量未在原因值未被返回的实例上正确设置。

我无法完全复制这个。当使用像410这样的已知状态代码时,我测试过的所有APIM实例似乎都设置了#34; Gone&#34;如果没有指定的原因。但是对于未知状态代码,没有返回原因。我没有看到新旧APIM实例之间的行为有任何差异。