gpt4 book ai didi

azure-api-management - 多行策略表达式中缺少 '}'

转载 作者:行者123 更新时间:2023-12-05 03:57:16 27 4
gpt4 key购买 nike

我正在尝试通过 ARM 模板部署 APIM 策略文件,但出现以下错误:

第 24 行第 6 列元素“set-variable”中的错误:代码块缺少结束字符\\"}\\"。确保此 block 中的所有\\"{\\"字符都具有匹配的\\"}\\"字符,并且没有任何\\"}\\"字符被解释为标记。

我最初是通过 Azure 门户中的 APIM 管理 Blade 创建此策略的,相关策略如下所示:

<set-variable name="digitalSignature" value="@{
string privateKey = context.Variables.GetValueOrDefault<string>("privateKey", "");
Encoding encoding = System.Text.Encoding.ASCII;
string usablePrivateKey = privateKey.Replace("-", "+").Replace("_", "/");
byte[] privateKeyBytes = Convert.FromBase64String(usablePrivateKey);
byte[] encodedPathAndQueryBytes = encoding.GetBytes(context.Request.Url.Path + context.Request.Url.QueryString);
HMACSHA1 hashAlgorithm = new HMACSHA1(privateKeyBytes);
byte[] hash = hashAlgorithm.ComputeHash(encodedPathAndQueryBytes);
string digitalSignature = Convert.ToBase64String(hash).Replace("+", "-").Replace("/", "_");

return digitalSignature;
}" />

但是,该表达式包含许多不是有效 XML 的字符,因此我在 *.policy.xml 文件中对上述代码进行了转义,如下所示:

<set-variable name="digitalSignature" value="@{
string privateKey = context.Variables.GetValueOrDefault&lt;string&gt;(&quot;privateKey&quot;, &quot;&quot;);
Encoding encoding = System.Text.Encoding.ASCII;
string usablePrivateKey = privateKey.Replace(&quot;-&quot;, &quot;+&quot;).Replace(&quot;_&quot;, &quot;/&quot;);
byte[] privateKeyBytes = Convert.FromBase64String(usablePrivateKey);
byte[] encodedPathAndQueryBytes = encoding.GetBytes(context.Request.Url.Path + context.Request.Url.QueryString);
HMACSHA1 hashAlgorithm = new HMACSHA1(privateKeyBytes);
byte[] hash = hashAlgorithm.ComputeHash(encodedPathAndQueryBytes);
string digitalSignature = Convert.ToBase64String(hash).Replace(&quot;+&quot;, &quot;-&quot;).Replace(&quot;/&quot;, &quot;_&quot;);

return digitalSignature;
}" />

我错过了什么?由于支持 APIM 实例的 GIT 存储库中的策略 XML 文件未转义,我什至需要转义字符吗?

最佳答案

在进行更改以使其正常工作时,我删除了代码表达式中的所有注释(未在该问题中发布)以删除任何非明确必要的内容,这似乎已经解决了问题。

查看评论,我看不出是什么导致了问题,因为所有特殊字符都被转义了(并使用几个不同的 XML 转义实用程序进行了验证),但是由于不需要评论并且这是有效的,我认为问题已解决。

关于azure-api-management - 多行策略表达式中缺少 '}',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58701744/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com