asp.net - Azure Web 角色 - 长时间运行的请求(负载均衡器超时?)

标签 asp.net asp.net-mvc-3 azure azure-web-roles

我们的前端 MVC3 Web 应用程序使用 AsyncController,因为我们的每个实例都为数百个长时间运行的 IO 绑定(bind)进程提供服务。

由于 Azure 将在预定的时间间隔(这似乎根据您阅读的网站而有所不同)后终止“非事件”http session ,因此我们如何保持连接处于事件状态?

我们的客户必须保持连接,我们的流程将运行 30 秒到 5 分钟或更长时间。我们怎样才能让客户端保持连接/活跃?我最初想到在 Async 方法上设置超时,然后只用几个字节的输出来命中 Response 对象,有点像对响应进行分块,然后返回并等待更多。但是,我认为这不会起作用,因为 MVC3 正在处理 IIS 线程与异步响应的连接,此时异步响应已经渲染了 View 。

我们如何在 AsyncController 上运行一个非常长的进程,但客户端不会被 Azure 负载均衡器断开连接?向调用者发送立即响应,并要求调用者轮询或检查另一个资源 URL 是 Not Acceptable 。

最佳答案

Azure 负载均衡器空闲超时为 4 分钟。您能否尝试在客户端配置 TCP 保持事件时间少于 4 分钟,以保持连接事件?

另一方面,长时间保持每个客户端的连接打开是相当昂贵的。这将限制每台服务器可以处理的客户端数量。另外,我认为如果 IIS 认为需要该连接来服务其他请求,则无论其保持事件如何,它仍可能决定关闭该连接。

关于asp.net - Azure Web 角色 - 长时间运行的请求(负载均衡器超时?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12547463/

相关文章:

Django 服务器无法与 AzureLogHandler (opencensus) 一起使用

Asp.Net 内联(单文件)与代码隐藏

silverlight - 我应该制作一个纯 Silverlight 的社交网站还是使用 ASP.NET MVC?

html - @{#if DEBUG} 不起作用

c# - Unity 使用 AppServices 连接到 azure Sql 数据库

azure - 无法将 Azure 连接到 Matillion

c# - 使用 FindControl() 查找控件

c# - 如何在没有用户交互的情况下在 ASP.NET 中启动任务

c# - 如何测试返回的数组至少包含一个具有特定属性值的值

c# - 在 LabelFor() 控件中格式化文本