0

我有一个带有 CosmosDB (sql api) 输出绑定的 http 触发器,当我对已部署的版本进行 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 次命中。

在此处输入图像描述

4

2 回答 2

3

如果没有更多信息,我假设您可能会忘记CosmosDBConnection在门户上添加应用程序设置,因为您的代码在本地和在线都适用于我。中的设置local.settings.json不会插入到门户,因为它们用于本地开发。

于 2018-10-17T09:54:47.020 回答
0

我一直在尝试为添加书签功能实现 MS 学习教程,我发现每当我添加 CosmosDB 的输出绑定时,它都无法处理并生成相同的 500 内部错误。即使在 CosmosDB 中找不到测试输入参数中指定的 ID 时也会失败。

Azure 门户上的 Code+Test 面板还显示了以下日志,这些日志没有提供任何线索,说明请求有什么问题。

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)

由于我也有与输入绑定相同的 CosmosDB 帐户,因此我确信 CosmosDB 连接不是问题。

然后我继续更改了一些运行时参数。在玩了几个之后,一旦我将 RunTime 版本更改为 ~2,它就开始正常工作了。

我仍然不确定为什么 Runtime 3.0 不起作用,Github 上的 Azure Functions 团队已经有一个 BUG https://github.com/Azure/Azure-Functions/issues/1670打开。

于 2020-08-05T09:12:49.193 回答