我的.NET站点托管在Azure应用服务上。
我有一个后台任务,该任务调用一个外部API,该API返回一个json(〜5MB),在浏览器中对其进行测试通常需要3-4分钟才能完成。
但是从Azure服务器执行此调用失败。
var request = (HttpWebRequest)WebRequest.Create(apiUrl);
request.Timeout = request.ReadWriteTimeout = 15 * 60 * 1000; // 15 mins
request.Accept = "application/json";
var response = request.GetResponse();
using (var reader = new StreamReader(response.GetResponseStream()))
{
var result = reader.ReadToEnd();
...
}
我尝试调用在同一域上更快的其他API终结点,并且它们可以正常工作,因此这与Azure服务器是否被阻止或其他问题无关。
我觉得Azure在某些时候会终止连接。
我的日志显示以下内容:
18/02/2019 12:00:00 PM从https://xxxx/api/grouptours/下载包数据
18/02/2019 12:15:00 PM System.Net.WebException:操作已超时
编辑:尽管该网站在多个实例上运行,但我们没有负载均衡器或流量管理器设置。
答案 0 :(得分:1)
根据文档Why does my request time out after 230 seconds?
,Azure Load Balancer的默认空闲超时设置为少于4分钟(230秒)。对于后台任务,您可以查看webjob或azure函数。