我的.NET站点托管在Azure App Service上。
我有一个背景任务,该任务调用外部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/
从https://18/02/2019 12:15:00 pm System.net.webexception:操作已计时
edit :尽管网站在多个实例上运行,但我们没有负载平衡器也没有流量管理器设置。
azure负载平衡器的默认空闲超时设置小于四分钟(230 sec),根据文档:为什么我的请求时间在230秒后耗尽?
对于背景任务,您可以查看WebJob或Azure函数。