【问题标题】:404 when trying to connect to Cosmos DB from Bot Framework 4.6尝试从 Bot Framework 4.6 连接到 Cosmos DB 时出现 404
【发布时间】:2020-06-04 05:39:01
【问题描述】:

当我尝试从 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)。

【问题讨论】:

    标签: botframework azure-cosmosdb azure-cosmosdb-mongoapi


    【解决方案1】:

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

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


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

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

    【讨论】:

    • 天哪……你是救命稻草,谢谢,我会重新制作 db。
    • @BillSoftwareEngineer 哈哈!很高兴就是这样!我有 90% 的把握,但我担心这 10% 中的东西会完全离墙:)
    猜你喜欢
    • 2019-08-10
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-05
    相关资源
    最近更新 更多