gpt4 book ai didi

azure - 重试请求以 "Content length mismatch"结尾

转载 作者:行者123 更新时间:2023-12-03 04:44:41 25 4
gpt4 key购买 nike

我的问题是这样的:

我有一个 Azure APIM,我创建了一个 API 并添加了后端重试策略,如下所示。

<backend>
<retry condition="@("{{Transient-ErrorCode}}".Contains(Convert.ToString(context.Response.StatusCode)))" count="3" interval="5" first-fast-retry="false">
<forward-request />
</retry>
</backend>

服务器第一次返回成功(状态代码:200),当它启动重试时遇到以下情况(我也在重试成功,以测试重试是否正常工作。)。

forward-request (1.326 ms)
{
"messages": [
"Content length mismatch",
"Content length mismatch"
]
}

请提供您的想法/经验。

最佳答案

这是因为 APIM 中默认情况下客户端发送的请求不会缓存在内存中,而是直接从客户端流式传输到后端。因此,当需要重试时,请求负载不存在。我假设您仅在处理具有正文的请求时遇到问题。

要解决此问题,您首先需要缓存请求正文:

<inbound>
<set-variable name="body" value="@(context.Request.Body.As<string>(preserveContent: true))" />
</inbound>
<backend>
<retry condition="@("{{Transient-ErrorCode}}".Contains(Convert.ToString(context.Response.StatusCode)))" count="3" interval="5" first-fast-retry="false">
<set-body>@((string)context.Variables["body"])</set-body>
<forward-request />
</retry>
</backend>

关于azure - 重试请求以 "Content length mismatch"结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54648853/

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