我有一个已经存在的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类的位置,但遇到相同的错误。
答案 0 :(得分:1)
Cosmos DB Azure功能扩展nuget软件包已经附带了对Cosmos DB SDK的引用。
如果您将一个Cosmos DB SDK nuget包手动添加到一个项目的版本与Azure Function Extension定义的版本不同,则经常会发生此错误。
要解决此问题,请删除手动添加的Cosmos DB SDK参考,并使其通过扩展程序进行解析。