首页 > 解决方案 > 尝试从 Bot Framework 4.6 连接到 Cosmos DB 时出现 404

问题描述

当我尝试从 Bot Framework 4.6 连接到 Cosmos DB 时,我不确定我的连接字符串的格式是否正确:

        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);

在此处输入图像描述

使用此处的文档,Cosmos 服务 URL 似乎是正确的: 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)。

标签: botframeworkazure-cosmosdbazure-cosmosdb-mongoapi

解决方案


从您的端点和屏幕截图来看,您在创建 CosmosDB 时似乎选择了“Azure Cosmos DB for MongoDB API”。相反,您需要选择核心。

API 类型决定了您与 CosmosDB 服务交互的“方式”,并CosmosDbPartitionedStorage使用“核心”CosmosDB API 而非 MongoDB API。


它有点“被埋没”,所以我会说出来。这在文档中有所描述(强调我的):

  1. 在新帐户页面上,提供订阅、资源组信息。为您的帐户名称字段创建一个唯一名称 - 这最终成为您的数据访问 URL 名称的一部分。对于 API,选择 Core(SQL),并提供附近的 Location 以缩短数据访问时间。

推荐阅读