Политика набора переменных: тип возвращаемого выражения не разрешен

#azure #azure-api-management

#azure #azure-api-management

Вопрос:

Выражения политики Azure APIM имеют доступ к контекстному объекту, который имеет Variables свойство, которое должно иметь тип IReadOnlyDictionary<string, object> . Я должен иметь возможность добавлять значения в этот словарь с помощью политики набора переменных. Я хочу иметь возможность добавлять любой объект в словарь, но я сталкиваюсь с ошибками при попытке добавить что-либо, кроме строки.

Например, когда я пытаюсь сохранить это в своем определении политики входящих:

 <set-variable name="regexGroups" value="@(Regex.Match("inputString","regex").Groups)" />
  

Я получаю сообщение об ошибке следующего содержания:

Ошибка в элементе ‘set-variable’ в строке X, столбец Y: тип возвращаемого выражения ‘System.Text.RegularExpressions.Групповая коллекция, System’ не разрешена.

GroupCollection наследуется от, object , поэтому это должно быть допустимое значение в Variables словаре. Почему это не работает?

Если я попытаюсь явно преобразовать его в объект:

 <set-variable name="regexGroups" value="@((object)Regex.Match("inputString","regex").Groups)" />
  

Я получаю сообщение об ошибке следующего содержания:

Ошибка в элементе ‘set-variable’ в строке X, столбец Y: тип возвращаемого выражения ‘System.’Объект’ не разрешен

Я неправильно понимаю синтаксис?

Ответ №1:

Только некоторые типы разрешены в качестве значений переменных в выражениях APIM, object не является одним из них, вот полный список того, что разрешено в качестве значения переменной на данный момент:

  • Система.Логическое
  • Система.SByte
  • Система.Байт
  • Система.UInt16
  • Система.UInt32
  • Система.UInt64
  • System.Int16
  • System.Int32
  • System.Int64
  • Система.Десятичный
  • Система.Одиночный
  • Система.Двойной
  • Система.Guid
  • Система.Строка
  • Система.Символ
  • Система.Дата-время
  • Система.Временной интервал
  • Система.Байт[]
  • IResponse
  • Jwt
  • Newtonsoft.Json.Linq.JToken

Комментарии:

1. тип переменных face-palm меня сбил с толку, мне следовало внимательно перечитать документацию для Set-Variable. Спасибо!