Внедрение зависимостей в Cosmos DB не создает объект documentClient - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть сервис внутри функции azure

    public MyService(
            IConfigurationProvider configurationProvider,
            ISerializationHelperService serializationHelperService,
            ICommandListBuilder commandListBuilder,
            [CosmosDB(
                StaticSettings.Db,
                StaticSettings.MyCollection.Collection,
                ConnectionStringSetting = StaticSettings.DbConnectionStringSetting)] IDocumentClient documentClient)
        {
            //my logic here - this does get hit
        }

Мой экземпляр создан, однако documentClient имеет значение null

Как мне установить этот параметр правильно? Я не получаю никаких ошибок

Я проверил, и нет никаких проблем с настройками соединения

    public const string Db = "mydbname";
    public const string DbConnectionStringSetting = "CosmosDBConnection";

    public static class MyCollection
    {
        public const string Collection = "mycollectionname";
        public static Uri CollectionUri => UriFactory.CreateDocumentCollectionUri(Db, Collection);
    }

Я использую класс запуска с методом AddServices для настройки DI

Нужно ли что-то туда положить?

Пол

1 Ответ

0 голосов
/ 02 апреля 2020

У меня есть проект Azure function v2, и я могу ввести все свои зависимости. Добавлены следующие строки для IDocumentClient

string databaseEndPoint = Environment.GetEnvironmentVariable("DatabaseEndPoint");
        string databaseKey = Environment.GetEnvironmentVariable("DatabaseKey");
        builder.Services.AddSingleton<IDocumentClient>(new DocumentClient(new System.Uri(databaseEndPoint), databaseKey,
            new ConnectionPolicy
            {
                ConnectionMode = ConnectionMode.Direct,
                ConnectionProtocol = Protocol.Tcp,
                RequestTimeout = TimeSpan.FromMinutes(5),//Groupasset sync has some timeout issue with large payload
                // Customize retry options for Throttled requests
                RetryOptions = new RetryOptions()
                {
                    MaxRetryAttemptsOnThrottledRequests = 5,
                    MaxRetryWaitTimeInSeconds = 60
                }
            }
        ));

My Database Service

protected readonly IDocumentClient client;

    protected BaseDao(IDocumentClient client)
    {
        this.client = client;
    }

надеюсь, что это поможет!

...