为啥这个 azure apim 策略表达式会失败?

Posted

技术标签:

【中文标题】为啥这个 azure apim 策略表达式会失败?【英文标题】:why is this azure apim policy expression failing?为什么这个 azure apim 策略表达式会失败? 【发布时间】:2016-02-06 00:14:52 【问题描述】:

我为 Azure APIM 编写了一个简单的策略表达式,其中包括一个代码块表达式。这有效:

@ return "start" + new Random().Next().ToString();

但是,这不起作用:

@ return "start" + new Random().Next().ToString() + "end"

我尝试了第二个示例的几种变体,但无法让 APIM 策略管理器接受它。 APIM 策略错误返回以下错误:

“第 1 行第 21 列元素 'log-to-eventhub' 中的错误:代码块表达式必须用大括号括起来。”

但是,上面的表达式是在大括号中的。知道如何在上面的第二个示例中实现我想要做的事情吗?

【问题讨论】:

编码 new Random().Next() 如果代码在紧密循环中运行,会导致重复值。 【参考方案1】:

尝试改写为(注意末尾分号):

@ return "start" + new Random().Next().ToString() + "end"; 

或(不带“return”):

@ "start" + new Random().Next().ToString() + "end" 

【讨论】:

【参考方案2】:

您也可以只使用单个语句表达式和时髦的新 c# 6 字符串插值

@($"start new Random().Next().ToString() end")

【讨论】:

【参考方案3】:

尝试在末尾添加 ;(分号)。

@ return "start" + new Random().Next().ToString() + "end"; 

【讨论】:

以上是关于为啥这个 azure apim 策略表达式会失败?的主要内容,如果未能解决你的问题,请参考以下文章

需要使用 Azure APIM set-body 策略修改响应

从 APIM 策略获取 Azure 表存储实体

Azure APIM 策略

Azure APIM 睡眠或延迟策略

使用 Azure APIM 策略处理表单数据

azure apim set-body 策略问题中的响应更改