Нет доступа к коллекции DocumentDB в Azure из API приложений, развернутого в Azure

#c# #azure #azure-cosmosdb #azure-app-api

#c# #azure #azure-cosmosdb #azure-app-api

Вопрос:

У меня проблема с API для доступа к коллекции DocumentDB. Если я запускаю API из своей среды разработки (Visual Studio), он работает хорошо и возвращает все документы JSON в коллекциях. Время ожидания составляет около 1 минуты. Но когда API развернут в Azure, он ничего не возвращает. Я еще не реализовал Application Insight в API.

Код C # для API:

 string DatabaseId = ConfigurationManager.AppSettings["database"];
string CollectionId = ConfigurationManager.AppSettings["collectionExperimentos"];

DocumentClient client = new DocumentClient(new Uri(ConfigurationManager.AppSettings["endpoint"]), ConfigurationManager.AppSettings["authKey"],
new ConnectionPolicy
{
    ConnectionMode = ConnectionMode.Direct,
    ConnectionProtocol = Protocol.Tcp
});
var collectionLink = UriFactory.CreateDocumentCollectionUri(DatabaseId, CollectionId);
List<Experiment> experimentosList = new List<Experiment>();
experimentosList = client.CreateDocumentQuery<Experiment>(collectionLink).ToList();
experimentosList = experimentosList.OrderByDescending(experimentos => DateTime.Parse(experimentos.dateCreated)).ToList();
  

Размер коллекции составляет 160 МБ и не имеет разделов.

Комментарии:

1. Эдгар, какую версию C # SDK вы используете? Вы уверены, что подключаетесь к той же базе данных / коллекции в вашем приложении в Azure (лучший способ подтвердить — распечатать их в виде журнала)? Можете ли вы также проверить, возвращает ли первый CreateDocumentQuery 0 результатов или это второй. Дата и время. Синтаксический анализ выдаст ошибку, если у некоторых ваших документов нет свойства DateCreated, поэтому убедитесь, что это не так. Я бы добавил достаточно протоколирования в разных местах, чтобы увидеть, в чем проблема. Ваш код выглядит хорошо для меня.

2. поскольку вы говорите, что тот же код выполняется локально… вы подтвердили правильность вашей строки подключения (например, вы правильно настраиваете / извлекаете имя базы данных и коллекции через AppSettings )?

Ответ №1:

Симптомы указывают на то, что приложению не удается подключиться к базе данных. Вероятно, это связано с тем, что приложению не удается прочитать конечную точку базы данных и ключи, определенные в настройках службы приложений Azure.

 string DatabaseId = ConfigurationManager.AppSettings["database"];
string CollectionId = ConfigurationManager.AppSettings["collectionExperimentos"];

DocumentClient client = new DocumentClient(new Uri(ConfigurationManager.AppSettings["endpoint"]), ConfigurationManager.AppSettings["authKey"],
  

Вы можете найти дополнительную информацию о том, как настроить переменные среды и строки подключения в службе приложений Azure (я предполагаю, что это веб-приложение) здесь: https://azure.microsoft.com/en-us/documentation/articles/web-sites-configure /