Azure APIM使用Bicep模板导入策略报错:'Public'为意外令牌
问题原因及解决办法
错误出在XML策略文件的双引号未正确转义。XML属性值使用双引号包裹时,属性内部的双引号必须转义为",否则XML解析器会将内部双引号误判为属性值的结束标记,引发语法错误。
原XML中,condition和rewrite-uri的template属性内直接使用了双引号(如"Public"、"/"),与外层属性的双引号冲突,导致解析失败。
修正后的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>
将原文件替换为上述修正内容后,重新部署Bicep模板即可解决该验证错误。
内容的提问来源于stack exchange,提问作者Rob Bowman
相关产品推荐
相关产品推荐

