如何解决APIM 出站策略在删除策略之后立即跳过策略
任务和预期结果
我在 Azure API 管理中有以下出站策略。第一个删除标头(如果存在),第二个返回证书到期日期/时间(我用于测试)。
问题
似乎是在 delete
操作之后立即被跳过的策略。我已尝试更改顺序,但问题仍然存在。我还尝试通过添加单独的结束标记而不是自动关闭来更改删除操作,但这也不起作用。
我还从 API 管理中删除并重新创建了 API,但问题仍然存在。
代码和问题
<outbound>
<base />
<set-header name="x-ms-workflow-name" exists-action="delete" />
<set-header name="Certificate-Expiration" exists-action="override">
<value>@{
var response = context.Request.Certificate.NotAfter;
return response.ToString();
}</value>
</set-header>
<set-header name="Certificate-Thumbprint" exists-action="override">
<value>@{
var response = context.Request.Certificate.Thumbprint;
return response.ToString();
}</value>
</set-header>
<set-header name="Certificate-Subject" exists-action="override">
<value>@{
var response = context.Request.Certificate.PublicKey.Key.ToXmlString(false);
return response.ToString();
}</value>
</set-header>
</outbound>
解决方法
我在我这边进行了测试,带有 <set-header>
和 exists-action="delete"
的策略 exists-action="override"
工作正常。下面的截图是我在我身边测试的:
您的问题是由代码 var response = context.Request.Certificate.NotAfter
、var response = context.Request.Certificate.Thumbprint
、var response = context.Request.Certificate.PublicKey.Key.ToXmlString(false);
引起的。您需要先检查context.Request.Certificate
是否有NotAfter
、Thumbprint
和PublicKey
,然后才能使用。
比如,当你想使用var response = context.Request.Certificate.Thumbprint;
时,你需要检查Thumbprint
是否存在。您可以编写如下代码:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。