CosmosDBTrigger因类型错误而失败,并出现绑定错误

时间:2019-06-03 21:47:24

标签: c# .net triggers azure-functions azure-cosmosdb

我有一个已经存在的cosmos db,我想用它来触发azure函数。

这是我的Azure功能代码:

using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using System.Collections.Generic;

namespace CosmosTriggerFunc
{
    public static class MyFunc
    {
        [FunctionName("Func")]
        public static void Run([CosmosDBTrigger(
            databaseName: "dbname",
            collectionName: "collectionname",
            ConnectionStringSetting = "connectionStringSetting",
            LeaseCollectionName = "leases",
            CreateLeaseCollectionIfNotExists = true)]IReadOnlyList<Document> documents,
            TraceWriter log)
        {
            if (documents != null && documents.Count > 0)
            {
                log.Info($"Documents modified: {documents.Count}");
                log.Info($"First document Id: {documents[0].Id}");
            }
        }
    }
}

这是我的local.settings.json:

{
    "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "<validstring>",
    "AzureWebJobsDashboard": "<validstring>",
    "type": "CosmosDBTrigger",
    "name": "documents",
    "direction": "in",
    "leaseCollectionName": "leases",
    "connectionStringSetting": "<valid-conn-string>",
    "createLeaseCollectionIfNotExists": true
  }
}

这是我的错误:

A ScriptHost error has occurred
Exception while executing function 
Exception binding parameter 'documents'.
Binding can only be done with IReadOnlyList<Document> or JArray
Parameter name: type.

我在另一个项目中有一个类,是该集合中的文档。但是我尝试将其插入当前使用的Document类的位置,但遇到相同的错误。

1 个答案:

答案 0 :(得分:1)

Cosmos DB Azure功能扩展nuget软件包已经附带了对Cosmos DB SDK的引用。

如果您将一个Cosmos DB SDK nuget包手动添加到一个项目的版本与Azure Function Extension定义的版本不同,则经常会发生此错误。

要解决此问题,请删除手动添加的Cosmos DB SDK参考,并使其通过扩展程序进行解析。