Azure函数的http触发器给出500个内部服务器错误

时间:2018-10-16 15:26:31

标签: azure azure-functions azure-cosmosdb-sqlapi

我有一个http触发器,其输出绑定为CosmosDB(sql api)  当我对已部署的版本进行POST调用时,会出现500个内部服务器错误。

 public static class Function1
{
    [FunctionName("Function1")]
    public static async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "post", Route = null)] Request req,

  ILogger log, [CosmosDB(
            databaseName: "haveThatDB",
            collectionName: "Requests",
            ConnectionStringSetting = "CosmosDBConnection",CreateIfNotExists =true)] IAsyncCollector<Request> requestOutput
       )
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
        await requestOutput.AddAsync(req);



        return req != null
            ? (ActionResult)new OkObjectResult($"Hello, {req.ItemRequested}")
            : new BadRequestObjectResult("Please pass a name on the query string or in the request body");
    }
}

相同的代码在本地可以正常工作。

在KUDU和门户中不会为失败的请求生成日志。 如果我删除cosmosDB绑定,它将在本地(我可以看到正在创建的文档)和已部署的url中起作用,并且还会生成成功日志。

但是一旦我能够观察到一些错误消息,例如 “解析布尔值时出错。路径”,第1行,位置1。”但是之后,我再也无法在日志中看到此问题。因为在发生500个内部服务器错误的情况下没有日志。 激活应用程序见解也不会显示任何500次失败。

enter image description here

2 个答案:

答案 0 :(得分:1)

如果没有进一步的信息,我想您可能会忘记在门户网站的“应用程序设置”中添加CosmosDBConnection,因为您的代码在本地和在线方面都可以使用。 local.settings.json中的设置未插入门户网站,因为它们用于本地开发。

答案 1 :(得分:0)

我一直在尝试为添加书签功能在MS Learning中实现一个教程,我发现,每当添加CosmosDB的Output绑定时,它都无法处理,并且会生成相同的500-内部错误。当在CosmosDB中找不到在Testing上输入参数中指定的ID时,甚至失败。

Azure门户上的“代码+测试”面板还在下面的日志中显示,这些日志没有任何线索说明请求出了什么问题。

2020-08-05T06:05:43Z   [Information]   Executing 'Functions.add-bookmark' (Reason='This function was programmatically called via the host APIs.', Id=b6b6617d-c1d6-4729-91c9-c0d5f18ddc1b)
2020-08-05T06:05:43Z   [Verbose]   Sending invocation id:b6b6617d-c1d6-4729-91c9-c0d5f18ddc1b
2020-08-05T06:05:43Z   [Verbose]   Posting invocation id:b6b6617d-c1d6-4729-91c9-c0d5f18ddc1b on workerId:70d0b104-cdf6-4ad9-b2ac-d7e079b80544
2020-08-05T06:05:43Z   [Error]   Executed 'Functions.add-bookmark' (Failed, Id=b6b6617d-c1d6-4729-91c9-c0d5f18ddc1b, Duration=102ms)

由于我也具有与Input Binding相同的CosmosDB帐户,因此我确定CosmosDB连接不是问题。

然后,我继续更改一些运行时参数。与其中的几个玩了之后,将RunTime版本更改为〜2后,它就可以正常工作了。

我仍然不确定为什么Runtime 3.0无法运行,Github上的Azure Functions团队已经打开了一个错误https://github.com/Azure/Azure-Functions/issues/1670