提问人:James De Luca 提问时间:11/4/2023 更新时间:11/4/2023 访问量:13
在 Azure APIM 策略中设置后端响应状态代码
Setting Backend Response Status Code in Azure APIM Policy
问:
我有以下 Azure APIM 策略。但是,新的 JProperty(“status”, context.Response.StatusCode) 设置不正确。我怀疑这是因为上下文。Response.StatusCode 在此上下文中不可用。关于如何解决此问题以便设置响应的正确状态代码的任何建议?
<policies>
<inbound>
</inbound>
<backend>
<forward-request />
</backend>
<outbound>
<send-one-way-request mode="new" timeout="10000">
<set-url>myURL</set-url>
<set-method>POST</set-method>
<set-body>@{
var appIdNumber = Convert.ToInt32(context.Variables["appId"]);
var apiId = context.Variables["apiId"];
JArray jarrayObj = new JArray();
JObject obj = new JObject(
new JProperty("apiId", apiId),
new JProperty("appId", appIdNumber),
new JProperty("endpoint", context.Request.Url.Path + context.Request.Url.QueryString),
new JProperty("method", context.Request.Method),
new JProperty("status", context.Response.StatusCode),
new JProperty("apiLatency", context.Elapsed.Milliseconds),
new JProperty("timestamp", new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds()),
new JProperty("originIp", context.Request.IpAddress)
);
jarrayObj.Add(obj);
return jarrayObj.ToString();
}</set-body>
</send-one-way-request>
</outbound>
<on-error />
</policies>
我怀疑这是因为上下文。Response.StatusCode 在此上下文中不可用。
答:
0赞
James De Luca
11/4/2023
#1
我确实想通了。由于我正在模拟此端点,因此未设置状态代码。我将此行添加到后端策略中,现在状态代码已正确设置。
<backend>
<set-status code="200" reason="OK" />
</backend>
评论