I have the following Azure APIM policy. However, the new JProperty("status", context.Response.StatusCode) is not being set correctly. I suspect it is because the context.Response.StatusCode is not available in this context. Any suggestions on how I can fix this so that the correct status code of the response is set?
<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>
I suspect it is because the context.Response.StatusCode is not available in this context.
I did figure this out. Since I was mocking this endpoint, the status code was not being set. I added this line to the Backend Policy, and the status code is now set correctly.