Function CosmosDB与Azure功能和信号器的集成

Function CosmosDB与Azure功能和信号器的集成,function,signalr,azure-cosmosdb,Function,Signalr,Azure Cosmosdb,我正在处理microsoft在下面的链接中提供的示例 我遵循了所有步骤,在本地使用azure函数运行代码时出现以下错误: 函数“Functions.OnDocumentsChanged”的侦听器无法启动 开始[2019年2月18日晚上9:50:54]功能听众 “Functions.OnDocumentsChanged”无法启动。 Microsoft.Azure.Documents.ChangeFeedProcessor:租约集合, 如果已分区,则分区密钥必须等于id 错误消息非常清楚,触发器使用

我正在处理microsoft在下面的链接中提供的示例 我遵循了所有步骤,在本地使用azure函数运行代码时出现以下错误:

函数“Functions.OnDocumentsChanged”的侦听器无法启动 开始[2019年2月18日晚上9:50:54]功能听众 “Functions.OnDocumentsChanged”无法启动。 Microsoft.Azure.Documents.ChangeFeedProcessor:租约集合, 如果已分区,则分区密钥必须等于id


错误消息非常清楚,触发器使用辅助(租约)集合存储状态。在触发器定义中,您可以在上指定是否要指定特定的租约集合名称/数据库名称或保留默认值(“租约”)。 如果通过
CreateLeaseCollectionIfNotExists
属性不存在租约集合,则触发器也可以为您创建租约集合

在您的情况下,您似乎已经拥有先前创建的租约集合

问题在于,如果对租约集合进行了分区,则它需要按
/id
进行分区,这就是错误消息所说的:

租约集合(如果已分区)的分区键必须等于 身份证

因此,要解决此问题,您可以:

  • 删除当前租约集合,并使用
    CreateLeaseCollectionIfNotExists=true
    让触发器为您创建它
  • 手动创建租约集合并将
    /id
    设置为分区键

  • 您好,Matias感谢您的回复,我删除了租约集合并添加了您提到的行,但现在当我运行代码时,代码被困在[2/20/2019 3:07:35 AM]主机锁租约上,该租约由实例ID“0000000000000000000000001E2F93C0”获取。这意味着函数已初始化。您是否在Cosmos DB集合中进行更改以触发该函数?