azure apim导入策略-字符文本中的字符太多

ffscu2ro  于 2023-01-31  发布在  其他
关注(0)|答案(1)|浏览(160)

我正在尝试使用bicep模板将策略导入azure API管理,如下所示:

resource allOpsPolicy 'Microsoft.ApiManagement/service/apis/policies@2021-12-01-preview' = {
  name: 'policy'
  parent: apimapi_v1
  properties: {
    value: loadTextContent('all-ops-policy.xml')
    format: 'xml'
  }
}

all-ops-policy.xml文件的内容如下所示:

<policies>
    <inbound>
        <base />
        <choose>
            <when condition="@(context.Request.OriginalUrl.ToString().EndsWith('Public') == false)">
                <rewrite-uri template="@(String.Concat(context.Request.OriginalUrl.ToString(),'/'', 'MapServer'))" copy-unmatched-params="false" />
            </when>
            <otherwise />
        </choose>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

运行时,我得到以下错误:
“代码”:“验证错误”,“目标”:“选择”、“留言”:“第4行第10列的元素'choose'中有错误:字符文本”“中的字符太多
有人知道我哪里做错了吗?

4si2a6ki

4si2a6ki1#

请用双引号"替换单引号"。

context.Request.OriginalUrl.ToString().EndsWith('Public') == false)
context.Request.OriginalUrl.ToString().EndsWith("Public") == false

似乎还有一句话太多了:
一个二个一个一个
完整政策:

<policies>
    <inbound>
        <base />
        <choose>
            <when condition="@(context.Request.OriginalUrl.ToString().EndsWith("Public") == false)">
                <rewrite-uri template="@(String.Concat(context.Request.OriginalUrl.ToString(),"/", "MapServer"))" copy-unmatched-params="false" />
            </when>
            <otherwise />
        </choose>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
    </on-error>
</policies>

相关问题