我有一个带有 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 次命中。