gpt4 book ai didi

c# - Cosmos DB 调用永远不会通过异步调用返回

转载 作者:行者123 更新时间:2023-12-02 06:11:30 30 4
gpt4 key购买 nike

我在 WebApi 中有一个方法,它通过 SQL API 调用 Cosmos,该方法返回进程配置文件,但永远不会返回。任务挂起并且永远不会完成。我可以在“调试”的“线程”窗口中看到该任务。对同一数据库容器的其他调用运行得很好。几次调用后,我必须重新启动 IIS 才能清除任务。不会引发任何异常。我已经在有或没有 try catch 的情况下运行了它。复制到另一个控制台应用程序项目中的相同方法可以正常工作。是否存在任何已知的 Cosmos 超时导致结果过大的问题?这应该只返回 2 项。该行为与实时 Cosmos DB 和本地运行的 Cosmos 模拟器相同。

我正在使用最新的 Cosmos 软件包。

<package id="Microsoft.Azure.Cosmos" version="3.3.2" targetFramework="net472" />

构造函数

client = new CosmosClient(url, primaryKey, new CosmosClientOptions()
{
RequestTimeout = new TimeSpan(0, 0, 20),
ApplicationRegion = "West US 2",
ConnectionMode = ConnectionMode.Gateway,
GatewayModeMaxConnectionLimit = 1000,
MaxRetryAttemptsOnRateLimitedRequests = 1000,
});

database = client.GetDatabase("MyDatabase");
container = configDatabase.GetContainer("Configs");

此方法永远不会从await items.ReadNextAsync()返回

public async Task<Dictionary<int, string>> GetConfigurationList()
{
var values = new Dictionary<int, string>();
var query = new QueryDefinition("SELECT c.ConfigId, c.ConfigDescription FROM c where c.DataSourceType='CSV'");

var items = container.GetItemQueryIterator<(int ConfigId, string ConfigDescription )>(query);

while (items.HasMoreResults)
{
FeedResponse<(int ConfigId, string ConfigDescription )> configs = await items.ReadNextAsync();

foreach (var item in configs)
{
values.Add(item.ConfigId, item.ConfigDescription);
}
}
return values;
}

这个方法每次都运行良好

public async Task<LetterConfiguration> GetConfiguration(int id)
{
var query = new QueryDefinition("SELECT * FROM c where c.ConfigId= @id").WithParameter("@id",id);

var configItems = container.GetItemQueryIterator<ConfigFile>(query);

while (configItems.HasMoreResults)
{
FeedResponse<ConfigFile> configs = await configItems.ReadNextAsync();
if(configs.Count == 1)
{
return configs.FirstOrDefault();
}
}
return null;
}

最佳答案

这最终是调用存储库方法的 Controller 中缺少等待。感谢大家的意见。

关于c# - Cosmos DB 调用永远不会通过异步调用返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58612908/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com