我已在Azure APIM中设置重试策略以跟踪503错误。
<backend>
<retry condition="@(context.Response.StatusCode == 503)" count="3" interval="5" first-fast-retry="true">
<forward-request buffer-request-body="true" />
</retry>
</backend>
当后端api出现连接问题时,我们尝试3次,然后放弃重试。
这很好用,尽管即使内部错误被捕获为503,我们也会得到500内部服务器错误作为响应。
我们如何获得出站正确的返回码503?
答案 0 :(得分:0)
找到了答案,您可以使用该政策的“出错时”部分
<on-error>
<set-header name="ErrorMessage" exists-action="override">
<value>@(context.LastError.Message)</value>
</set-header>
<!--
<set-header name="ErrorSource" exists-action="override">
<value>@(context.LastError.Source)</value>
</set-header>
<set-header name="ErrorReason" exists-action="override">
<value>@(context.LastError.Reason)</value>
</set-header>
<set-header name="ErrorScope" exists-action="override">
<value>@(context.LastError.Scope)</value>
</set-header>
<set-header name="ErrorSection" exists-action="override">
<value>@(context.LastError.Section)</value>
</set-header>
<set-header name="ErrorPath" exists-action="override">
<value>@(context.LastError.Path)</value>
</set-header>
<set-header name="ErrorPolicyId" exists-action="override">
<value>@(context.LastError.PolicyId)</value>
</set-header>
<set-header name="ErrorStatusCode" exists-action="override">
<value>@(context.Response.StatusCode.ToString())</value>
</set-header>
-->
</on-error>