You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure APIM策略校验PageSize参数时表达式语法报错问题排查

API网关PageSize参数校验策略报错解决

问题场景

需在API网关的outbound区段校验查询参数PageSize,当参数值≥20时返回提示信息,添加的策略代码如下:

<outbound>
    <choose>
         <when condition="@(context.Request.Url.Query.GetValueOrDefault(\"PageSize\")) >= 20">
            <set-status code="205" reason="validation" />
            <set-body template="none">{\"Message\":\"PageSize need to be less than 20\"}</set-body>
        </when>
    </choose>
    <base />
</outbound>

报错信息

保存策略时门户返回错误:

一个或多个字段包含无效值:
第21行第10列的'choose'元素存在错误:表达式语法无效。

问题原因及修正方案

原因

context.Request.Url.Query.GetValueOrDefault("PageSize")返回的是字符串类型,直接与数字20做比较会引发类型不匹配,导致表达式语法错误。

修正代码

<outbound>
    <choose>
         <when condition="@(int.TryParse(context.Request.Url.Query.GetValueOrDefault("PageSize"), out int pageSize) && pageSize >= 20)">
            <set-status code="205" reason="validation" />
            <set-body template="none">{"Message":"PageSize need to be less than 20"}</set-body>
        </when>
    </choose>
    <base />
</outbound>

修正说明

  • 用int.TryParse安全转换参数值,避免参数为空或非数字时抛出异常
  • 先验证转换成功,再进行数值比较,确保表达式语法合法且逻辑正确

内容的提问来源于stack exchange,提问作者Nuwan Indika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 04:35:36