c# - Azure Web应用程序负载平衡超时问题,获取 HTTP 状态 500 和子状态 121

标签 c# asp.net-mvc azure iis azure-web-app-service

我们有一个网站,可以加载和分析 Excel 数据并向用户报告。现在,分析 Excel 数据的过程平均需要 5 分钟以上(取决于数据),在此期间客户端服务器通信似乎闲着。

此网站作为 Web 应用程序托管在 Azure 上,根据以下链接,Azure 似乎有负载平衡超时

https://azure.microsoft.com/en-us/blog/new-configurable-idle-timeout-for-azure-load-balancer/

在此链接中提到

In its default configuration, Azure Load Balancer has an ‘idle timeout’ setting of 4 minutes.

This means that if you have a period of inactivity on your tcp or http sessions for more than the timeout value, there is no guarantee to have the connection maintained between the client and your service.

由于此问题,最终用户不断获得 HTTP 状态 500 和子状态 121。

目前我们无法重新架构系统,也无法更改作为 Web 应用程序的部署。

我们尝试按照设定的时间间隔向服务器发送 Jquery ajax 请求,但这似乎不起作用。

上面的文章讨论了使用 ServicePoint.SetTcpKeepAlive() 保持 TCP session 处于事件状态,但我们不知道如何在 MVC Web 应用程序中实现这一点。(在网上也没有找到任何示例)

我们确实需要解决这个问题,因为这可能会成功或破坏我们的项目。因此,我们非常感谢您的帮助。特别是在 MVC 应用程序中使用 ServicePoint.SetTcpKeepAlive() 的任何工作示例代码都非常受欢迎

提前致谢。

更新

我尝试了 Irb 提到的内容,但仍然没有运气。正如您在给定图像中看到的那样,我反复调用 KeepSessionAlive。每次调用 KeepSessionAlive 时,我都会访问 session 变量,确保 session 不会超时。但仍然调用保存返回 500。同样,这只发生在 Azure 中

enter image description here

最佳答案

返回 json 的 Web API 方法不会始终保持 session 处于事件状态。如果您请求调用 session 的某些内容,那么您可以从客户端按定时间隔调用它。像使用 jpeg Web 处理程序请求图像这样简单的事情就可以工作。 Here是类似内容的链接。

关于c# - Azure Web应用程序负载平衡超时问题,获取 HTTP 状态 500 和子状态 121,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36050833/

相关文章:

c# - 使用 SQL 数据读取器 C# 进行参数化查询

javascript - 如何从 JavaScript 触发 ASP.NET Core 客户端验证

Azure Service Fabric 支持的操作系统

c# - Windows Azure 访问 App_Data

c# - 急切加载导航属性时,Entity Core 查询仅返回一项

c# - 从 MVC Controller 添加 SignalR Hub 组

asp.net - LegacyCasModel ="true"和动态数据/操作

azure - Azure SQL 数据库弹性池和 Azure SQL 数据库托管实例之间有什么区别?

c# - 如何通过 URL 检查文件是否存在于 Web 服务器上?

asp.net-mvc - 如何在 App_Code 文件夹中的 Razor View 中使用 Url.Action