我创建了一个 Web 应用程序 (ASP.NET Core MVC),用于从 SQL 服务器检索大量数据。该应用程序安装在一台装有 IIS 6.2 和 Windows Server 2012R2 的服务器 (A) 上,而 SQL 服务器安装在另一台装有 MS SQL Server 2014 和 Windows Server 2012R2 的服务器 (B) 上。
当此应用程序安装在服务器A上时,检索大量数据时返回错误:
502 - Web server received an invalid response while acting as a gateway or proxy server.
There is a problem with the page you are looking for, and it cannot be displayed. When the Web server (while acting as a gateway or proxy) contacted the upstream content server, it received an invalid response from the content server.
当应用程序在我自己的计算机上运行并连接到服务器 B 的 SQL 时,没有返回任何错误并且任务成功完成。
是超时还是优先级错误?服务器 A 和服务器 B 的事件查看器中均未返回任何错误。是服务器 A 的配置(IIS 或其他)吗?
注意:服务器中的其他应用程序运行正常。
注意:应用程序的日志有以下类型的消息:
warn: Microsoft.EntityFrameworkCore.Query[20500]
The LINQ expression 'where {from String q in __8__locals1_Geobricks_2 where [l].Geobrick.StartsWith([q]) select [q] => Any()}' could not be translated and will be evaluated locally.
答案1
通过优化 SQL 查询解决了该问题。
我设法通过包含之前未包含在提交给 SQL 服务器的 SQL 命令中的 WHERE 子句来缩短从 SQL 服务器检索的数据。
我没有尝试,但我可以将命令超时设置为更长的时间......