http - 3.8 分钟后准确获取 http 响应,状态代码为 500 OK

标签 http azure web

我正在向 Azure 上托管的 Web 应用程序发送 http 请求,该请求需要 1 个多小时才能完成。在 Chrome 中发送请求后,我使用 F12 检查网络状态。每次请求都返回状态码500 OK,所用时间正好是3.8分钟。
我远程调试了这个 Web 应用程序,发现代码运行得很好,没有任何异常指示 500 OK 错误,但浏览器只是返回 500 OK。
我也用谷歌搜索了很多。但由于奇怪的状态码“500 OK”,我找不到任何有用的东西。 3.8分钟看起来像是一些与时间相关的设置,所以我尝试在Web.config中的httpRuntime标记中设置executionTimeout,并且还尝试了ServicePointManager.SetTcpKeepAlive,这些都不起作用。 有人遇到过这样的情况吗?

最佳答案

这是您的 Azure 架构设计的问题。任何需要超过 5 秒才能完成的进程都应在不同的服务器上处理。

您的架构应包括 1.带有休息端点的Azure Web App 2.Azure WebJob绑定(bind)到队列 3.Azure存储队列(输入) 4.Azure 存储 Blob(输出)。

传入请求应使用适当的参数将消息放入队列中。 Webjob 应绑定(bind)到监视消息的队列。当收到消息时,它会进行处理,然后将响应放在输出 blob 上。

您的应用程序应发出“已完成处理”请求,该请求会在 blob 中查找请求的预期 ID。

要密切关注进度,您可以在表存储或 SQL 中保留一个表,以密切关注流程状态(待处理、正在处理、已完成、已接收)。

此架构将使您的应用程序能够更好地扩展并提高性能并提供适当的响应。

希望有帮助

关于http - 3.8 分钟后准确获取 http 响应,状态代码为 500 OK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31935595/

相关文章:

http - AngularJS - 未知提供者配置 $httpProvider

azure - 在 Azure ServiceBus 中使用大量实体是否有缺点

azure - ADB2C的refresh_token总是在一天内过期

linux - 使用尽可能少的资源,模拟挂起的 Web 应用程序的最佳方法是什么?

http - 多部分和分块协议(protocol)之间的区别?

http - 为什么我对 Torrent Tracker 的 GET 请求不起作用?

http - 如何删除 Mule 默认 header 并设置从第三方 API 收到的 header

c# - 来自 OnEventActivityAsync 的数据在第一次之后不会更改 ConversationState

c# - 使用 Json.NET,如何将具有动态名称的对象列表解析为列表?

javascript - 如何创建全屏幻灯片