【问题标题】:Azure App Service outbound request timeoutAzure 应用服务出站请求超时
【发布时间】:2019-07-11 11:14:41
【问题描述】:

我的 .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:操作已超时

编辑:虽然网站在多个实例上运行,但我们没有负载均衡器或流量管理器设置。

【问题讨论】:

  • 您是如何解决这个问题的?我还在下载一个需要 5 分钟的 json。我加载了一个小时然后超时。还有一个网络作业。在我的本地机器上它可以工作。有什么想法吗?
  • @NinjaOnSafari 对我来说,webJob 下载工作正常,即使运行时间超过 5 分钟。

标签: c# azure timeout azure-web-app-service


【解决方案1】:

根据文档,Azure 负载均衡器的默认空闲超时设置不到四分钟(230 秒):Why does my request time out after 230 seconds?

对于后台任务,您可以查看 webjob 或 azure 函数。

【讨论】:

  • 即使我将请求放在 WebJob 中,我也遇到了同样的问题。如果请求时间超过 4 分钟,则抛出 TaskCancelledException。网络作业是否遵循相同的四分钟规则?
猜你喜欢
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 2019-02-06
  • 1970-01-01
  • 1970-01-01
  • 2014-04-07
相关资源
最近更新 更多