Я столкнулся с этой проблемой для шлюза 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]
Может кто-нибудь помочь мне решить эту проблему.