ASP.. NET WebAPI在Azure上的httpRuntime设置不工作



至少目前我必须通过WebAPI提供同步服务,其中响应需要几分钟才能产生。我已经试着在这方面做了功课,并且有了网络。配置设置每个MS文档和几个SO帖子,特别是:

  • 在系统中。网页部分我有编译debug="false"
  • 在httpRuntime部分我有executionTimeout="7200"

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

要去挖掘服务器日志,但希望有人能回答这个问题,节省我一些时间。谢谢。

如果采用当前的方法,可能很难获得可靠的解决方案。您可能已经成功地为托管应用程序的IIS服务器设置了超时,但是,在您的客户机和服务器之间可能存在许多中间组件,它们可能有自己的超时值。例如,在Azure上,您的请求可能通过ARR路由。即使你可以控制那个网络组件,要调用你的API的客户端在他们的网络中也有代理,这些代理有自己的超时值。

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

我的一个队友首先通过将Azure web应用程序更改到我们的一个vm来解决这个问题。然后,他跟随微软论坛的帖子:Azure Powershell -虚拟机IdleTimeoutInMinutes值:"we…"通过创建负载平衡端点解决此问题,然后为其设置超时值。"

最新更新