Azure APIM set-query-parameter策略表达式无法返回值求助
Azure APIM set-query-parameter策略表达式未求值问题解决
你的问题根源是表达式语法错误+外层引号使用不当,导致APIM无法识别为可执行的C#表达式,直接将整个内容作为查询参数值返回。
问题点拆解
- 字符串拼接语法错误:原表达式中
DateTime.Now.ToString("yyyyMMddHHMMssff")+")+0000000"多了一个多余的闭合括号),正确的拼接应该是DateTime.Now.ToString("yyyyMMddHHMMssff") + "0000000"。 - 外层引号冗余:在APIM策略中,
@{ ... }形式的表达式不需要额外用双引号包裹,外层加引号会让APIM将其识别为普通字符串常量,而非可执行表达式。
修正后的完整策略代码
<set-query-parameter name="timestamp" exists-action="override"> <value>@{ string timestamp = DateTime.Now.ToString("yyyyMMddHHMMssff") + "0000000"; return Uri.EscapeDataString(timestamp); }</value> </set-query-parameter>
额外验证步骤
- 可以在APIM门户的表达式测试器中单独测试这段C#代码,确认输出格式符合预期后再嵌入策略。
- 确保策略放置在正确的策略作用域(如入站策略)内,且没有其他策略干扰参数设置。
内容的提问来源于stack exchange,提问作者Vijay Sharma
相关产品推荐
相关产品推荐

