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

Azure APIM策略中Trace仅显示变量名而非值的问题排查

Azure APIM Trace策略显示变量名而非实际值的问题解决

问题根源

你的策略代码存在两处关键错误:

1. Trace策略未正确解析表达式

APIM的<trace>元素中,若要嵌入变量值,必须将整个日志文本包装为C#表达式(用@(...)包裹)。你当前的写法是直接在普通文本中插入@(...),APIM会将其视为普通字符串输出,而非解析变量值。

2. set-variable中的字符串插值语法错误

在tokenRequestUrl变量赋值时,字符串插值内部使用了双引号嵌套(context.Variables["expiresOn"]),这会导致C#语法错误,变量无法正确赋值,后续Trace自然拿不到实际值。

修正后的策略代码

<set-variable name="expiresOn" value="@(Uri.EscapeDataString(DateTime.UtcNow.AddDays(30).ToString("yyyy-MM-ddTHH:mm:ssZ")))" />
<trace source="policy" severity="information">@($"Generated expiresOn value: {context.Variables["expiresOn"]}")</trace>
<!-- Assign full URL to a variable and log it -->
<set-variable name="tokenRequestUrl" value="@($"https://myapp.com/rest/jwt/?expiresOn={context.Variables['expiresOn']}")" />
<trace source="policy" severity="information">@($"Token request URL: {context.Variables.GetValueOrDefault("tokenRequestUrl", "NULL")}")</trace>

关键修正说明

  • Trace部分:将日志内容改为@($"文本内容: {变量}")的形式,通过C#字符串插值解析变量值,确保APIM执行表达式并输出实际内容。
  • set-variable部分:将context.Variables["expiresOn"]改为context.Variables['expiresOn'],用单引号避免双引号嵌套导致的语法错误,保证变量正确赋值。

内容的提问来源于stack exchange,提问作者Sandeep Thomas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 03:57:09