gpt4 book ai didi

C# EF ASP.NET Web API 超时 - 如何调用长时间运行的查询?

转载 作者:行者123 更新时间:2023-11-30 16:45:24 25 4
gpt4 key购买 nike

我有一个要执行的 C# 代码。

  str = "SELECT u.LastName " +
",COALESCE(COUNT(DISTINCT pc.PhraseId), 0) AS CreatedByQty " +
", COALESCE(COUNT(DISTINCT pm.PhraseId), 0) AS ModifiedByQty " +
"FROM dbo.AspNetUsers u " +
"LEFT JOIN dbo.Phrase pc " +
"ON u.Id = pc.CreatedBy " +
"LEFT JOIN dbo.Phrase pm " +
"ON u.Id = pm.ModifiedBy " +
"GROUP BY u.LastName ";
threeColQuery = db.Database.SqlQuery<threeCol>(str);
threeColReport = await threeColQuery.ToListAsync();
return Ok(threeColReport);

我通过在 SQL Server 管理器中运行查询知道大约需要 30 秒。

在 Web API 调用中运行时,我得到:

"innerException":{"message":"An error has occurred.","exceptionMessage":"The wait operation timed 

有没有办法让 WebAPI 调用运行长时间运行的查询?

最佳答案

修改 Entity Framework 上的超时设置应该可以解决问题。

db.Database.CommandTimeout = 60;

我还建议不要通过连接字符串设置全局默认超时。对于大多数查询来说,一分钟太长了,您的 30 秒查询是该规则的一个异常(exception)(因此您有意增加了超时期限)。

通过阻止应用中的所有超时异常,您将失去另一个查询行为不当的良好指标 - 导致长期性能问题。

关于C# EF ASP.NET Web API 超时 - 如何调用长时间运行的查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42201780/

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