调用 Azure 函数时出现 FunctionInvocationException

FunctionInvocationException when Azure function is called

我的 Azure 函数有问题。函数无法启动,因为每次都抛出 FunctionInvocationException。

内部异常是一个 InvalidOperationException,带有以下消息:

PartitionKey must be supplied for this operation

我的函数中有两个连接到文档数据库的绑定,一个是从集合中检索特定文档的输入绑定,另一个是用于审计的输出绑定。

这些在我的开发、质量检查和 uat 环境中都运行良好,只是生产环境有问题。这两个集合(用于设置和审计)都是在没有分区键的情况下创建的,与每个环境相同。

System.InvalidOperationException: at Microsoft.Azure.Documents.Client.DocumentClient+d__347.MoveNext (Microsoft.Azure.Documents.Client, Version=1.11.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35)

有什么想法吗?

我试过删除并重新制作审计集合,但没有奏效。我不明白为什么其他环境都很好,但这个却不行。

编辑:

function.json

{
  "scriptFile": "..\bin\Cso.Notification.Function.dll",
  "entryPoint": "Cso.Notification.Function.Program.Run",
  "disabled": false,
  "bindings": [
    {
      "type": "httpTrigger",
      "direction": "in",
      "webHookType": "genericJson",
      "name": "request",
      "methods": [
        "post"
      ]
    },
    {
      "type": "documentDB",
      "name": "subscriberSettings",
      "databaseName": "CSO",
      "collectionName": "Settings",
      "id": "SubscriberSettings",
      "connection": "CsoDocDb",
      "direction": "in"
    },
    {
      "type": "http",
      "direction": "out",
      "name": "res"
    },
    {
      "type": "documentDB",
      "name": "collector",
      "databaseName": "CSO",
      "collectionName": "AuditJSON",
      "connection": "CsoDocDb",
      "direction": "out"
    }
  ]
}

我找到了答案。我们查询初始值 (SubscriberSettings) 的文档之一使用 PartitionKey 设置不正确。

删除集合并在没有分区键的情况下重新创建它就成功了。