CosmosDBTrigger завершается с ошибкой привязки из-за неправильного типа - PullRequest
0 голосов
/ 04 июня 2019

У меня уже есть база данных космоса, и я хочу использовать ее для запуска функции лазури.

Вот мой код функции 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 Ответ

1 голос
/ 04 июня 2019

Пакет Nuget для расширения функций Cosmos DB Azure уже содержит ссылку на Cosmos DB SDK.

Эта ошибка часто возникает, если вы вручную добавляете пакет nuget Cosmos DB SDK в один из ваших проектов, версия которого отличается от версии, определенной в расширении функции Azure.

Чтобы решить эту проблему, удалите ссылку на SDK Cosmos DB, которая была добавлена ​​вручную, и разрешите ее разрешение через расширение.

...