Azure httpRuntime设置上的ASP.NET WebAPI无法正常工作

时间:2015-09-22 22:28:43

标签: azure asp.net-web-api

目前至少我必须通过WebAPI提供同步服务,其中响应需要几分钟才能生成。我已经尝试过这方面的功课,并根据MS文档和几个SO帖子设置web.config,具体来说:

  • 在system.web部分,我有编译debug =“false”
  • 在httpRuntime部分,我有executionTimeout =“7200”

当我使用Postman调用API时,它会在一段时间后停止并显示“Status 500 OK Time 230089 ms”(约4分钟)。使用客户端的人只会得到500错误。但是应用程序不会抛出异常并且该过程成功完成。只有没有客户才能收到回复。

要深入研究服务器日志,但希望有人能够回答这个并节省一些时间。感谢。

2 个答案:

答案 0 :(得分:1)

采用您当前的方法获得可靠的解决方案可能非常困难。您可能已成功设置托管应用程序的IIS服务器的超时,但是,客户端和服务器之间可能存在任意数量的中间组件,这些组件可能具有自己的超时值。例如,在Azure上,您的请求可能通过ARR路由。即使您可以控制该网络组件,将要调用您的API的客户端也会在其网络中拥有具有自己的超时值的代理。

对于像这样的长时间运行请求,最好的选择是返回202响应,其中包含一个URL,客户端应该轮询该URL以等待长时间运行的操作完成。

答案 1 :(得分:0)

我的一位队友首先通过从Azure网络应用程序更改为我们的某个虚拟机来解决问题。然后他跟随这个MS论坛帖子的主角: Azure Powershell - IdleTimeoutInMinutes value for VM: “我们......通过创建负载均衡的端点,然后为其设置超时值来解决它。”