调用Azure函数时的FunctionInvocationException

时间:2017-07-24 00:17:10

标签: c# azure exception azure-functions production

我的Azure功能存在问题。该函数无法启动,因为每次都抛出FunctionInvocationException。

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

  

必须为此操作提供PartitionKey

我的函数中有两个连接到Document DB的绑定,一个是从集合中检索特定文档的绑定,另一个是用于审计的out绑定。

这些在我的dev,qa和uat环境中都能很好地工作,只有生产环境才有问题。两个集合(用于设置和审计)都是在没有分区键的情况下创建的,与每个环境相同。

  

System.InvalidOperationException:          在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"
    }
  ]
}

1 个答案:

答案 0 :(得分:0)

我找到了答案。我们查询初始值的一个文档(SubscriberSettings)使用PartitionKey设置错误。

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