DocumentClient не работает после развертывания в Azure - PullRequest
0 голосов
/ 22 октября 2018

Я работаю над POC (в .Net Core), чтобы записать некоторые данные в локальный эмулятор Cosmos DB с помощью Azure DocumentClient.

private string _endpointUri = String.Empty;
private string _primaryKey = String.Empty;
private DocumentClient _client;
private string _databaseName = String.Empty;
private string _collectionName = String.Empty;

public CosmosDBStorage(IConfiguration configuration)
{
    _endpointUri = configuration["CosmosDBEndpointUri"];
    _primaryKey = configuration["CosmosDBPrimaryKey"];
    _client = new DocumentClient(new Uri(_endpointUri), _primaryKey);
    _databaseName = configuration["CosmosDBName"];
    _collectionName = configuration["CosmosDBCollectionName"];
}

public async Task WriteAsync(dynamic data)
{
    try
    {
        await this._client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri(_databaseName, _collectionName), data);
    }
    catch
    {
        throw;
    }
}

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

Сообщение об исключении: Произошла ошибка при отправке запроса

Трассировка стека исключений:

at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Documents.Client.DocumentClient.HttpRequestMessageHandler.<SendAsync>d__3.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
at System.Net.Http.HttpClient.<FinishSendAsyncBuffered>d__58.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Documents.Client.GatewayServiceConfigurationReader.<GetDatabaseAccountAsync>d__43.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Documents.Routing.GlobalEndpointManager.<GetDatabaseAccountFromAnyLocationsAsync>d__15.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Documents.Client.GatewayServiceConfigurationReader.<InitializeReaderAsync>d__45.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Documents.Client.DocumentClient.<InitializeGatewayConfigurationReader>d__319.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Documents.Client.DocumentClient.<GetInitializationTask>d__85.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Documents.Client.DocumentClient.<EnsureValidClientAsync>d__135.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Documents.Client.DocumentClient.<GetCollectionCacheAsync>d__70.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at Microsoft.Azure.Documents.Client.DocumentClient.<CreateDocumentInlineAsync>d__143.MoveNext()
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at CallSite.Target(Closure , CallSite , Object )
at System.Dynamic.UpdateDelegates.UpdateAndExecuteVoid1T0
at BotFrameworkDev.Storage.CosmosDBStorage.<WriteAsync>d__7.MoveNext() in C:\GIS\ChatBot\BotFrameworkDev\BotFrameworkDev\Storage\CosmosDBStorage.cs:line 42
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at BotFrameworkDev.EchoBot.<OnTurn>d__8.MoveNext() in C:\GIS\ChatBot\BotFrameworkDev\BotFrameworkDev\EchoBot.cs:line 99

Есть идеи, в чем может быть проблема?

Обновление:

Добавлены подробности внутренних исключений.

Сообщение об исключении: Не удалось установить соединение с сервером

Трассировка стека исключений:

at BotFrameworkDev.Storage.CosmosDBStorage.<WriteAsync>d__7.MoveNext() in C:\GIS\ChatBot\BotFrameworkDev\BotFrameworkDev\Storage\CosmosDBStorage.cs:line 42
— End of stack trace from previous location where exception was thrown —
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at BotFrameworkDev.EchoBot.<OnTurn>d__8.MoveNext() in C:\GIS\ChatBot\BotFrameworkDev\BotFrameworkDev\EchoBot.cs:line 99

1 Ответ

0 голосов
/ 22 октября 2018

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

Он будет искать в своей сети и потерпит неудачу.Вам нужно будет указать на фактический экземпляр CosmosDB или каким-либо образом выставить ваш эмулятор с сервера или компьютера для службы приложений Azure.

Помните, что эмулятор CosmosDB должен использоваться только для локальной разработки иничего больше.Предполагается, что он эмулирует поведение и не является реальным.

Рекомендуемый подход - создать учетную запись CosmosDB и использовать эту строку подключения.

...