I have my API hooked up to Azure's API Management service. When I try to call one of my endpoints, I get the following error:
{
"statusCode": 500,
"message": "Internal server error",
"activityId": "79c1bef9-a05d-4734-b729-0657c1749e40"
}
I enabled tracing and this is the trace json
{
"traceId": "79c1bef9a05d4734b7290657c1749e40",
"traceEntries": {
"inbound": [
{
"source": "api-inspector",
"timestamp": "2017-10-24T21:50:09.6322945Z",
"elapsed": "00:00:00.0002259",
"data": {
"request": {
"method": "GET",
"url": "https://mysite.azure-api.net/partner/api/partner/ClientsActions",
"headers": [
{
"name": "Ocp-Apim-Subscription-Key",
"value": "..."
},
{
"name": "Connection",
"value": "Keep-Alive"
},
{
"name": "Host",
"value": "mysite.azure-api.net"
}
]
}
}
},
{
"source": "api-inspector",
"timestamp": "2017-10-24T21:50:09.6322945Z",
"elapsed": "00:00:00.0002352",
"data": {
"configuration": {
"api": {
"from": "/partner",
"to": null,
"version": null,
"revision": "1"
},
"operation": {
"method": "GET",
"uriTemplate": "/api/partner/ClientsActions"
},
"user": {
"id": "1",
"groups": [
"Administrators",
"Developers"
]
},
"product": {
"id": "57c59e76ea12f3007f060002"
}
}
}
},
{
"source": "cors",
"timestamp": "2017-10-24T21:50:09.6322945Z",
"elapsed": "00:00:00.0002544",
"data": "Origin header was missing or empty and the request was classified as not cross-domain. CORS policy was not applied."
},
{
"source": "choose",
"timestamp": "2017-10-24T21:50:09.6322945Z",
"elapsed": "00:00:00.0002633",
"data": {
"message": "Expression was successfully evaluated.",
"expression": "context.Request.Url.Query.ContainsKey(\"key\")",
"value": false
}
},
{
"source": "set-header",
"timestamp": "2017-10-24T21:50:09.6322945Z",
"elapsed": "00:00:00.0002744",
"data": {
"message": "Expression was successfully evaluated.",
"expression": "(string)context.User.Id",
"value": "1"
}
},
{
"source": "set-header",
"timestamp": "2017-10-24T21:50:09.6322945Z",
"elapsed": "00:00:00.0002802",
"data": {
"message": "Specified value was assigned to the header (see below).",
"header": {
"name": "x-client-id",
"value": "1"
}
}
}
],
"backend": [
{
"source": "forward-request",
"timestamp": "2017-10-24T21:50:09.6322945Z",
"elapsed": "00:00:00.0002909",
"data": {
"message": "Backend service URL is not defined."
}
},
{
"source": "forward-request",
"timestamp": "2017-10-24T21:50:09.6322945Z",
"elapsed": "00:00:00.0004824",
"data": {
"messages": [
null,
"Backend service URL is not defined."
]
}
}
],
"outbound": [
{
"source": "transfer-response",
"timestamp": "2017-10-24T21:50:09.6322945Z",
"elapsed": "00:00:00.0007989",
"data": {
"message": "Response headers have been sent to the caller."
}
},
{
"source": "transfer-response",
"timestamp": "2017-10-24T21:50:09.6322945Z",
"elapsed": "00:00:00.0008730",
"data": {
"message": "Response body streaming to the caller is complete."
}
}
]
}
}
The "Backend service URL is not defined." messages look suspicious to me but I can't find any information on what they might mean. If I had to guess I'd say API Management is having issues talking to my real API but I can access it fine directly.
Anyone have any idea what might be going on or what I should look at? I'm running the tests directly through the developer portal provided by Azure.
Jason
I had the same issue. I resolved it by putting the back end API URL on the "Web service URL" of my API in the API Management. So at the time of writing, the steps using the portal would be: