在Azure APIM策略中设置后端响应状态代码

bfrts1fy  于 2023-11-21  发布在  其他
关注(0)|答案(1)|浏览(175)

我有以下Azure APIM策略。但是,未正确设置新的JProperty(“status”,context.Response.StatusCode)。我怀疑这是因为context.Response.StatusCode在此上下文中不可用。对于如何修复此问题以便设置响应的正确状态代码,有何建议?

  1. <policies>
  2. <inbound>
  3. </inbound>
  4. <backend>
  5. <forward-request />
  6. </backend>
  7. <outbound>
  8. <send-one-way-request mode="new" timeout="10000">
  9. <set-url>myURL</set-url>
  10. <set-method>POST</set-method>
  11. <set-body>@{
  12. var appIdNumber = Convert.ToInt32(context.Variables["appId"]);
  13. var apiId = context.Variables["apiId"];
  14. JArray jarrayObj = new JArray();
  15. JObject obj = new JObject(
  16. new JProperty("apiId", apiId),
  17. new JProperty("appId", appIdNumber),
  18. new JProperty("endpoint", context.Request.Url.Path + context.Request.Url.QueryString),
  19. new JProperty("method", context.Request.Method),
  20. new JProperty("status", context.Response.StatusCode),
  21. new JProperty("apiLatency", context.Elapsed.Milliseconds),
  22. new JProperty("timestamp", new DateTimeOffset(DateTime.UtcNow).ToUnixTimeSeconds()),
  23. new JProperty("originIp", context.Request.IpAddress)
  24. );
  25. jarrayObj.Add(obj);
  26. return jarrayObj.ToString();
  27. }</set-body>
  28. </send-one-way-request>
  29. </outbound>
  30. <on-error />
  31. </policies>

字符串
我怀疑这是因为context.Response.StatusCode在此上下文中不可用。

7rfyedvj

7rfyedvj1#

我确实发现了这一点。因为我是在模拟这个端点,所以没有设置状态代码。我将这一行添加到后端策略中,现在状态代码设置正确了。

  1. <backend>
  2. <set-status code="200" reason="OK" />
  3. </backend>

字符串

相关问题