从 .net 中的 ReadItemAsync cosmosdb 客户端获取 404

问题描述 投票:0回答:1

我一直在尝试弄清楚如何在 .net web api 中设置 cosmos db 客户端,但还不够。

我注意到在使用 cosmosdb ReadItemAsync 函数时我总是得到 404 响应
enter image description here

使用以下代码:

public async Task<OkObjectResult> All()
{
    var client = CosmosService.GetClient();
    var container = client.GetDatabase("Development").GetContainer("Notes");

    var result = await container.ReadItemAsync<CosmosNote>("1717482138", new PartitionKey("id"));
    return Ok(result);
}

我也尝试过使用不同的功能。我尝试过使用 ReadManyItemsAsync,但由于某些奇怪的原因,它令人惊讶地工作!

public async Task<OkObjectResult> All()
{
    var client = CosmosService.GetClient();
    var container = client.GetDatabase("Development").GetContainer("Notes");

    List<(string, PartitionKey)> itemsToFind = new()
    {
        ("1717482138", new PartitionKey("id"))
    };

    var data = await container.ReadManyItemsAsync<CosmosNote>(itemsToFind);
    return Ok(data);
}

我不明白为什么 ReadItemAsync 不起作用,有人可以帮忙吗?
谢谢!

编辑: azure 中的 Cosmos 数据浏览器 enter image description here

.net azure azure-cosmosdb cosmos dotnet-sdk
1个回答
0
投票

PartitionKey
中,您需要使用值而不是属性名称。如果将其更改为:

var partition = new PartitionKey("1717482138"); //<- value instead of property
var result = await container.ReadItemAsync<CosmosNote>("1717482138", partition);

假设您使用

/id
作为 Cosmos 容器中的分区,它应该可以工作。

© www.soinside.com 2019 - 2024. All rights reserved.