C# 长DB查询返回网关超时的API调用,尽管超时时间延长

C# 长DB查询返回网关超时的API调用,尽管超时时间延长,c#,entity-framework,api,server,command-timeout,C#,Entity Framework,Api,Server,Command Timeout,我正在使用EntityFramework6访问API应用程序中的SQL Server。API服务器和DB服务器是分开的。我有一个已知的长查询,运行该查询需要一分钟多一点的时间。我已使用以下代码在EF DbContext上设置CommandTimeout: db.Database.CommandTimeout = 20 * 60; // 20 minutes 不幸的是,这似乎没有任何影响,因为查询仍然在不到一分钟内超时,服务器返回504网关超时错误 为什么此更改对命令执行时间限制没有任何影响

我正在使用EntityFramework6访问API应用程序中的SQL Server。API服务器和DB服务器是分开的。我有一个已知的长查询,运行该查询需要一分钟多一点的时间。我已使用以下代码在EF DbContext上设置CommandTimeout:

db.Database.CommandTimeout = 20 * 60;  // 20 minutes
不幸的是,这似乎没有任何影响,因为查询仍然在不到一分钟内超时,服务器返回504网关超时错误

为什么此更改对命令执行时间限制没有任何影响

我是否还应该做些什么来延长此查询的运行时间

更多详情:

我已经编写了一个桌面应用程序,它向API服务器发出API调用,而API服务器又向db服务器发出查询。在桌面应用程序端,我设置了HttpClient属性:

httpClient = new HttpClient { Timeout = new TimeSpan( 0, 20, 0 ) };
在API服务器端,我设置了执行超时:

<system.web>
    <httpRuntime requestPathInvalidCharacters="" maxRequestLength="2097151" executionTimeout="30000" />
</system.web>

在API服务器上,我设置了SQL命令超时,如上所述

在某些情况下,响应总是在不到一分钟后结束,尽管我已经将所有我能想到的超时设置为20分钟。我假设504是由db超时引起的,但我认为它很可能位于桌面应用程序和API服务器之间


不管怎样,我已经没有什么想法了,所以任何事情都会有帮助。

结果是,我没有考虑另一个超时设置。因为我使用Elastic Beanstalk在AmazonWeb服务上托管API和数据库服务器,所以在我的桌面应用程序和API服务器之间有一个负载平衡器。默认超时为60秒。以下是增加负载平衡器超时设置的链接:


API服务器上的超时情况如何?@Octanic我假设超时发生在db服务器上,因为我得到了网关超时。也许这是一个错误的假设。您是否尝试在本地运行相同的命令?这看起来一点也不像EF超时错误,但很可能是客户端应用程序服务连接超时的问题。@Gabriel Rainha我添加了更多详细信息。您能在调试器中运行API以查看是否是SQL查询超时(并获取任何错误详细信息)吗?