Не удается подключиться к CosmosDB из функции VS Code Azure - PullRequest
0 голосов
/ 04 июня 2018

Я создал функцию Azure (2.0v) из шаблона C # HTTP.Затем я добавил привязку вывода к CosmosDB на основе документов CosmosDB :

public static class AddEvent

{
    [FunctionName("AddEvent")]
    public static void Run(

        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)]
            HttpRequest req, 
        [CosmosDB("SomeDatabase", "SomeCollection", Id = "id", 
        ConnectionStringSetting = "myCosmosDB", CreateIfNotExists = true)] 
            out dynamic document)
    {
        document = new { Text = "something", id = Guid.NewGuid() };
    }
}

пакетов, которые я использую (файл csproj):

<PackageReference Include="Microsoft.Azure.WebJobs.Extensions.CosmosDB" Version="3.0.0-beta7" />
<PackageReference Include="Microsoft.NET.Sdk.Functions" Version="1.0.11" />

Это мой локальный.settings.json.Я основал их на значениях из эмулятора CosmosDB:

{
    "IsEncrypted": false,
    "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "AzureWebJobsDashboard": "",
        "myCosmosDB": "AccountEndpoint=https://localhost:8081/;AccountKey=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw=="
    }
}

К сожалению, когда я нажимаю HTTP-триггер, я получаю:

System.Private.CoreLib: Exception while executing function: AddEvent.
Microsoft.Azure.WebJobs.Host: Exception binding parameter 'document'.
Microsoft.Azure.DocumentDB.Core: The type initializer for 'Microsoft.Azure.Documents.UserAgentContainer' threw an exception. 
Object reference not set to an instance of an object.

Что означает это исключение?Я не могу найти соответствующую информацию об этом, и это полностью останавливает мою местную работу.Функция работает хорошо без атрибута CosmosDB.

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

Это должно быть серьезное изменение в новом кли.Попробуйте понизить cli до 2.0.1-beta.25, он работает на моей стороне.Кстати, я рекомендую вам обновить Microsoft.NET.Sdk.Functions до 1.0.13, чтобы избежать возможных исключений.

beta.24 кажется устаревшим и также вызывает ошибку Method not found на моей стороне.В то время как beta.26 приводит к ошибке, такой же как beta.28.

Тем не менее, если я отлаживаю проект напрямую с помощью VS (который использует beta.26 безрежимная версия ) или публикую его в Azure, все работает нормально.Открыли проблему на github , вы можете отследить ее, если хотите.

Обновление

Решено в 2.0.1-beta.29, время выполнения 2.0.11857.0.

0 голосов
/ 08 июня 2018

Это была регрессия с последней версией (2.0.11776) хоста.Это было решено, и в настоящее время выпуск находится в процессе.

0 голосов
/ 04 июня 2018

На какую версию пакета DocumentDB вы ссылаетесь?

Рекомендуется либо:

понизить любой nuget DocumentDB до 1.13.2.

Полностью удалить ссылку на DocumentDBи вместо этого непосредственно ссылайтесь на Microsoft.Azure.WebJobs.Extensions.DocumentDB, который будет ссылаться на правильную версию для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...