404 при попытке подключения к Космос БД из Bot Framework 4.6 - PullRequest
2 голосов
/ 20 февраля 2020

Я не уверен, что формат моей строки подключения правильный, когда я пытаюсь подключиться к базе данных Cosmos из Bot Framework 4.6:

        IStorage memoryStorage = null;
        // memoryStorage = new MemoryStorage();
        memoryStorage = new CosmosDbPartitionedStorage(
            new CosmosDbPartitionedStorageOptions
            {
                CosmosDbEndpoint = "https://myDB.mongo.cosmos.azure.com:443/",
                AuthKey = "MyKey",
                DatabaseId = "dev",
                ContainerId = "conversation-state"
            }
            );

        var conversationState = new Models.ConversationState(memoryStorage);
        var UserState = new UserState(memoryStorage);


        services.AddSingleton(conversationState);
        services.AddSingleton(UserState);

enter image description here

URL-адрес службы Cosmos, по-видимому, является правильным, используя документацию здесь: https://docs.microsoft.com/en-us/azure/bot-service/bot-builder-howto-v4-storage?view=azure-bot-service-4.0&tabs=csharp#memory -storage

Это говорит об использовании SSL, поэтому я использовал порт 443, но порт на соединении строка скажет 10255

Чего мне не хватает?

Это сообщение об ошибке, которое я получаю:

В бот добавлена ​​ошибка или ошибка: Код состояния ответа делает не указывает на успех: 404 Подстатус: 0 Причина: (, URI запроса: /, RequestStats:, SDK: Windows / 10.0.17763 cosmos-netstandard-sdk / 3.2.1).

1 Ответ

2 голосов
/ 20 февраля 2020

Судя по вашей конечной точке и вашему скриншоту, похоже, что вы выбрали "Azure Cosmos DB для MongoDB API" при создании CosmosDB. Вместо этого вам нужно выбрать Core.

Тип API определяет «как» вы взаимодействуете со службой CosmosDB, а CosmosDbPartitionedStorage использует «Core» API CosmosDB в отличие от MongoDB API.


Это немного "похоронено", так что я вызову это. Это описано в документах (выделено мной):

На странице Новая учетная запись укажите Подписку, информацию о группе ресурсов. Создайте уникальное имя для поля «Имя учетной записи» - оно в конечном итоге станет частью вашего URL-адреса для доступа к данным. Для API выберите Core (SQL) и укажите расположение поблизости для улучшения времени доступа к данным.
...