Ошибка шлюза API Azure при заданной переменной [2] - PullRequest
0 голосов
/ 20 июня 2019

Я столкнулся с этой проблемой для шлюза Azure API, реализованного в нескольких наших продуктах:

Ошибка оценки выражения сообщения.В экземпляре объекта не задана ссылка на объект.Тип исключения GatewayError
Неисправный метод set-variable [2]

{ "statusCode": 500, "message": "Internal server error", "activityId": "bbcf1e2d-c3bd-4020-8a40-cffd99a7f09e" }

Это случайный тип.Согласно моему анализу, когда я получаю ResponseCode равным 500 или 0 из Back End API, моя оценка выражения политики завершается неудачно, когда я собираю RequestMethod, ResponseBody, StatusCode Received, RequestBody, RequestURL и сохраняю то же самое в переменной.

Я прочитал несколько статей по устранению неполадок и подтвердил, что тег BASE не пропал нигде в политиках.По-видимому, это может вызвать некоторые проблемы.

Пытаясь исправить проблему, я теперь использовал условный оператор при установке каждой переменной, однако та же ошибка все еще происходит.

<choose>
            <when condition="@((string)(context.Variables["RequestOperation"]) == "POST")">
                <set-variable name="RequestedBody" value="@(context.Request.Body == null ? " Unable to capture":
                context.Request.Body.As<string>(preserveContent: true))" />
            </when>
            <otherwise>
                <set-variable name="RequestedQueryParameters" value="@(context.Request.Url.QueryString == null || 
                context.Request.Url.QueryString == "" ? "Unable to capture":(string)context.Request.Url.QueryString)" />
            </otherwise>
        </choose>

Этот код записан в политике INBOUND под тегом BASE.

Ошибка оценки выражения политики со следующим сообщением об ошибке: Ошибка оценки выражения сообщения.В экземпляре объекта не задана ссылка на объект.Тип исключения GatewayError
Неудачный метод set-variable [2]

Может кто-нибудь помочь мне решить эту проблему.

...