c# - Azure Web Apps 超时长处理请求

标签 c# ajax asp.net-mvc azure web-applications

所以,我有一个在 Azure 上运行的 Web 应用程序,并且有一个 API 端点可以处理一个很长的过程(我可以说大约一个小时)。在 Visual Studio 本地运行时没问题,但到 Azure 时,请求启动 55 秒后失败。

我在每个平台上都对这个问题进行了研究,我改变了在端点添加这行代码的机会。

System.Web.HttpContext.Current.Server.ScriptTimeout = 10000;

现在可以延长到超时,但在3分50秒后仍然无法处理。在这一点上,我发现还有一个叫做负载均衡器的东西。他们都说 Azure 负载均衡器将在 4 分钟后自动终止所有请求。所以我就坚持在这个地方了。

所以我尝试了所有这些解决方案。

1.System.Web.HttpContext.Current.Server.ScriptTimeout = 10000; 2.System.Net.ServicePointManager.SetTcpKeepAlive(true, 30000, 30000); 3.使用Start New Thread来处理长进程,并向客户端返回http状态码以表示进程已启动。 4.将长进程作为另一个异步函数

我想要实现的目标非常简单,一个长流程函数,可以通过调度程序任务或手动(AJAX 调用)触发。

有什么建议吗?

最佳答案

我认为您达到了 Azure Web Apps 的默认超时(如果我没记错的话,我认为是 3 分钟,但可能是错误的)。您可以从门户设置 SCM_COMMAND_IDLE_TIMEOUT - Web 应用程序设置 => 应用程序设置 => 添加具有所需值的设置(例如 360(以秒为单位))。 Reference 。 有一种功能会在外部操作超时时终止它们(信息位于上面的链接中)。

关于c# - Azure Web Apps 超时长处理请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37282625/

相关文章:

c# - 升级到 EntityFramework 6.1.3,现在收到上下文异常

c# - 找不到与具有绑定(bind) WSHttpBinding 的端点的方案 http 相匹配的基地址

c# - Entity Framework 不将元数据嵌入到 dll 中

javascript - 使用jquery $.ajax读取javascript文件的困惑

asp.net-mvc - ASP.NET DisplayFormat dd/MM/yyyy 不起作用

c# - Http POST 在 asp.net core 中不起作用,仅当服务器停止时才起作用

jquery - Jeditable - 检测 ajax 错误

javascript - JavaScript 可以与不同的服务器通信吗?

asp.net - 将用户重定向回原始页面

asp.net-mvc - 如何获取类库中的ControllerContext