C# 如何在Azure API管理中访问设置变量策略中的请求正文?

C# 如何在Azure API管理中访问设置变量策略中的请求正文?,c#,json,azure,azure-api-management,C#,Json,Azure,Azure Api Management,json请求主体包含一个我想要访问并存储在context.Variable中的值,因此稍后我可以在控制流表达式中使用它 以下是json请求主体: { "File": [ { "Key": "ValueToGet", "List": [ {}, {} ] } ] } 我希望“Valu

json请求主体包含一个我想要访问并存储在context.Variable中的值,因此稍后我可以在控制流表达式中使用它

以下是json请求主体:

  {
    "File": [
      {
        "Key": "ValueToGet",
        "List": [
          {},
          {}
        ]
      }
    ]
  }
我希望“ValueToGet”是设置变量策略的值,如下所示:

<set-variable name="myVar" value="ValueToGet">


我尝试使用以下表达式将主体存储在单独的变量中:

<set-variable name="varBody" value="@(context.Request.Body.As<JObject>())" />

然后在下一组变量策略中使用它:

<set-variable name="myVar" value="@{
        JObject json = JObject.Parse(context.Variables.GetValueOrDefault<string>("varBody"));
        var code = json.GetValue("Key");
        return code;
        }" />

但它似乎不起作用,我收到了与我储存身体的方式有关的以下错误:

{
    "messages": [
        {
            "message": "Expression evaluation failed.",
            "expression": "context.Request.Body.As<JObject>()",
            "details": "Object reference not set to an instance of an object."
        },
        "Expression evaluation failed. Object reference not set to an instance of an object.",
        "Object reference not set to an instance of an object."
    ]
}
{
“信息”:[
{
“消息”:“表达式计算失败。”,
“表达式”:“context.Request.Body.As()”,
“详细信息”:“对象引用未设置为对象的实例。”
},
“表达式计算失败。对象引用未设置为对象的实例。”,
“对象引用未设置为对象的实例。”
]
}
当我试图访问同一组变量策略中的请求主体时,我会遇到相同的错误


我对这个问题绞尽脑汁已经有一段时间了,我非常感谢任何帮助。谢谢。

如果您只想使用第一个
文件
项的
值设置变量,请尝试以下表达式:

<set-variable name="myVar" value="@(context.Request.Body.As<JObject>()["File"][0]["Key"])" />

我已经与您的请求机构在我这方面进行了测试,它非常适合我:

跟踪日志:


谢谢您的登记。我会接受答案,因为这是我想要的。现在的问题是,变量的类型是JValue,当我尝试访问它时,我得到类型错误:“表达式计算失败。无法将类型为
Newtonsoft.Json.Linq.JValue
的上下文变量
myVar
转换为`System.String`类型。”。你知道怎么处理吗?