c# - Cosmos DB 返回 404
问题描述
我正在成功连接我的新 Cosmos DB。
private async Task InitialiseDb()
{
client = new CosmosClient(cosmosUrl, cosmosKey);
database = await client.CreateDatabaseIfNotExistsAsync(databaseName);
container = await database.CreateContainerIfNotExistsAsync("MyContainer", "/id");
}
然后我设法将一个项目填充到我的 Cosmos 实例中。
var response = await container.CreateItemAsync(myDocument);
登录到 Azure 并查看我的项目时,我看到了该项目。所以它被存储了。
现在我正在尝试取回该项目,但收到有关not found
.
Microsoft.Azure.Cosmos.CosmosException :响应状态码不表示成功:NotFound (404);子状态:0;ActivityId:e90da49c-510e-4940-a888-9531427a3810;原因:(错误:[“资源未找到。了解更多:https://aka.ms/cosmosdb-tsg-not-found”]);
我获取物品的方法非常简单:
public async Task<MyDto> GetRecord(Guid myId)
{
var data = await container.ReadItemAsync<FlightDoc>(myId.ToString(), new PartitionKey("id"));
return new MyDto
{
Id = Guid.Parse(data.Resource.id)
};
}
我想我误解了分区以及它是如何工作的。有什么明显的错误吗?这是我的数据浏览器的部分屏幕截图:
我正在传递上面 ID 中显示的 ID。
编辑:更好地解释数据。飞行,收集了很多样本。一个航班有很多样本……每个样本都有一个 ID。但我正试图用样品带回 Flgith。
解决方案
刚刚注意到代码,你需要在代码中传递分区键值而不是分区键
var data = await container.ReadItemAsync<FlightDoc>(myId.ToString(), new PartitionKey(myId.ToString()));
推荐阅读
- css - CSS 切换 bootstrap-vue 卡全屏
- c# - 在正文中发送 json 以进行 API 后期测试
- html - 使用 ActionLink 将目录的值从锚标记传递到控制器
- mysql - Mysql经常关机/重启
- python - 我可以解析 PDF 文件以进行抓取吗?
- javascript - 使用 javascript 修复正则表达式以支持 wiki 中的电子邮件示例?
- html - 在选择字段中多次选择多个选项
- amazon-web-services - 使用 java 13 的 aws lambda
- node.js - Azure函数获取订阅中的资源组列表-Nodejs
- html - 为什么是
标签占用空白而不是背景色