C# 在Azure http触发器post方法中计算动态json数据时发生500内部服务器错误

C# 在Azure http触发器post方法中计算动态json数据时发生500内部服务器错误,c#,.net-core,json.net,azure-functions,C#,.net Core,Json.net,Azure Functions,我正在创建一个Azure函数http触发器post方法,在该方法中,我在正文中接收json数据,然后映射它并将其存储在blob存储中。它在本地运行良好,但在Azure环境中失败。在application insight中,我创建了一个自定义日志事件,其中我看到错误是由于json动态数据计数引起的。 错误:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException 无法对空引用执行运行时绑定 这是我的示例代码 公共异步任务运行([HttpTrigge

我正在创建一个Azure函数http触发器post方法,在该方法中,我在正文中接收json数据,然后映射它并将其存储在blob存储中。它在本地运行良好,但在Azure环境中失败。在application insight中,我创建了一个自定义日志事件,其中我看到错误是由于json动态数据计数引起的。 错误:Microsoft.CSharp.RuntimeBinder.RuntimeBinderException 无法对空引用执行运行时绑定 这是我的示例代码 公共异步任务运行([HttpTrigger(AuthorizationLevel.Anonymous,“get”,“post”,Route=null)]HttpRequest请求) {

示例http请求数据 { “函数名”:“abc”, “方法”:“发布”, “标题”:{}, “正文”:{ “数据”:[ { “项目1”:1, “创建时间”:“2021-02-10T21:07:08Z”, “项目2”:“b”, “项目3”:-1, “项目4”:空, “项目5”:空, “arrayitem”:{ “项目1”:“1”, “项目2”:“2”, “项目3”:“3” }, “数据”:{}, “arrayevent”:{ “abc”:1 }
},

我可以看出您的JSON中存在两个问题

  • 它应该是
    “item2”:“b”
    而不是
    “item2”:b
  • “1”
    “3”
    有两个键用于
    “item1”
    。因此您必须删除其中一个键
  • 因此,我的建议是首先修复JSON,然后继续


    遇到问题,您应该使用
    json[“body”][“data”]。Count
    not
    json[“body”][“data”].count
    Newtonsoft.Json.Linq.JArray
    没有计数方法。

    很抱歉,这是我在共享数据时犯的错误。现在已更正,我猜m getting是正确的。错误消息到底是什么?您可以尝试Json.body.data吗?错误消息:无法对空值执行运行时绑定reference@shashankshekhar检查更新的回答
            try
            {
                StringBuilder csveventcontent = new StringBuilder();
    
                string requestBody =
                    await new StreamReader(req.Body).ReadToEndAsync();
    
                dynamic json = JsonConvert.DeserializeObject(requestBody);
    
                 int eventsDataloopCount = json["body"]["data"].Count;