botframework - 尝试从 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)。
解决方案
从您的端点和屏幕截图来看,您在创建 CosmosDB 时似乎选择了“Azure Cosmos DB for MongoDB API”。相反,您需要选择核心。
API 类型决定了您与 CosmosDB 服务交互的“方式”,并CosmosDbPartitionedStorage
使用“核心”CosmosDB API 而非 MongoDB API。
它有点“被埋没”,所以我会说出来。这在文档中有所描述(强调我的):
- 在新帐户页面上,提供订阅、资源组信息。为您的帐户名称字段创建一个唯一名称 - 这最终成为您的数据访问 URL 名称的一部分。对于 API,选择 Core(SQL),并提供附近的 Location 以缩短数据访问时间。
推荐阅读
- c# - 更新 Cookie 以删除元素 C#
- c++ - MFC C++ CListCtrl - 删除所有项目不会回收内存
- reactjs - 为什么这个 React 状态返回为未定义?
- forms - 访问 Form.Requery 工作不一致
- c# - Visual Studio 15.8.5 突然无法实时显示错误
- python - aws eb 部署错误:没有为 anaconda-client==1.6.9 找到匹配的发行版
- r - 对重复处理而不是参数执行 pca
- google-cloud-endpoints - 如何使用 Google Cloud Endpoints 设置自定义用户身份验证
- python - int() python3.6的无效文字
- iot - 为什么 Quectel BG96 在注册 CS 服务时卡住了?