APIM Liquid fails with error

Edwin van de Burgt 1 Reputation point

On our dev APIM instance, our Liquid template is working fine, but on test it fails doing a "| Downcase", with a very strange error:

"Liquid error: Object of type 'Microsoft.WindowsAzure.ApiManagement.Proxy.Gateway.Templates.JTokenDrop' cannot be converted to type 'System.String'."

Even Google can't find anything about JTokenDrop.

I've created a very simple test policy for a GET operation (Content-Type: application/json header required, otherwise it will never work):

        <set-body template="none">{ "A" : "Abc" }</set-body>
        <set-body template="liquid">
{ "Test": "{{body.A | Downcase}}", "test": "{{body.A | downcase}}" }
    <backend />
        <set-header name="Content-Type" exists-action="override">
        <set-body template="none">@(context.Request.Body.As<string>())</set-body>
        <base />

On dev, it returns the expected { "Test": "abc", "test": "Abc" }, on test:
"Test": "Liquid error: Object of type 'Microsoft.WindowsAzure.ApiManagement.Proxy.Gateway.Templates.JTokenDrop' cannot be converted to type 'System.String'.",
"test": "Abc"

By the way, I know "downcase" is invalid, because the Liquid operations in APIM should start with a capital, so that one is essentially a no-op.

I already tried to get a fresh APIM instance by doing a trick*, but the issue remains...

I would like to have this issue resolved, of course, but also I would like to have a method to see on with "patch level" the APIM instances are, because I expect that that's the difference...

Azure API Management
Azure API Management
An Azure service that provides a hybrid, multi-cloud management platform for APIs.
1,740 questions
{count} votes