C# Azure ASP.net WebApp请求超时
我已将ASP.net MVC web应用程序部署到Azure应用程序服务 我从我的站点向某个从DB(DbContext)获取数据的控制器方法发出GET请求。有时,从数据库获取数据的过程可能需要4分钟以上。这意味着我的请求在4分钟内没有任何操作。在Azure终止连接后-我收到消息: 500-请求超时。web服务器失败 在指定时间内作出响应 这是一个方法示例:C# Azure ASP.net WebApp请求超时,c#,asp.net-mvc,azure,C#,Asp.net Mvc,Azure,我已将ASP.net MVC web应用程序部署到Azure应用程序服务 我从我的站点向某个从DB(DbContext)获取数据的控制器方法发出GET请求。有时,从数据库获取数据的过程可能需要4分钟以上。这意味着我的请求在4分钟内没有任何操作。在Azure终止连接后-我收到消息: 500-请求超时。web服务器失败 在指定时间内作出响应 这是一个方法示例: [HttpGet] public async Task<JsonResult> LongGet(string test
[HttpGet]
public async Task<JsonResult> LongGet(string testString)
{
var task = Task.Delay(360000);
await task;
return Json("Woke", JsonRequestBehavior.AllowGet);
}
因此,我正在寻找我做错了什么以及如何在Azure Web app中增加请求超时时间的答案。感谢您的帮助
门户上的Azure设置:
Web套接字-打开
永远在线
应用程序设置:
SCM\u命令\u空闲\u超时=3600
网站\u节点\u默认\u版本=4.2.3230秒。就这样。这是Azure应用程序服务中的飞行中请求超时。它是在平台中硬编码的,所以TCP是否保持有效,您仍然受到它的约束 来源——请参见David Ebbo的答案:
对于不返回任何数据的请求,有230秒(即略少于4分钟)的超时时间。之后,客户机将获得您看到的500,即使实际上允许请求在服务器端继续 如果不了解更多有关应用程序的信息,就很难提出不同的方法。然而,很清楚的是,你确实需要一种不同的方法--
可能会返回一个
202接受的
,而不是一个位置
标题,以便稍后对结果进行投票?我刚刚将我的Azure网站从共享环境更改为标准,它可以正常工作。感谢您的帮助。伟大的信息下的链接。上面写着“对于不发送任何数据的请求,有230秒(即略少于4分钟)的超时时间。”但TCP保持活动是为了发送数据,所以会话不应在230秒后标记为空闲。这本书就是这么写的。如果我一周内没有其他意见,我会把你的答案记为正确答案。感谢当TCP保持有效性应用于Azure负载平衡器时,它们不适用于应用程序服务,因为230秒超时是第7层(HTTP),而不是传输层(TCP,第4层)。这仍然是真的吗,或者他们在去年添加了任何可配置的内容吗?不,仍然是230秒。如果您需要更多,它不再是一个交互式请求。应立即接受202
,并将工作推迟到后台。我被告知“保持连接长时间处于活动状态的一种常见做法是使用TCP保持活动状态。通过保持持续的网络活动,空闲超时值永远不会达到,连接将保持较长时间”。我在我的客户端应用程序中使用了SetTcpKeepAlive方法,我看到这些TCP保持活动的数据包在Azure中来回传输到我的应用程序服务,但它没有影响,230秒后空闲连接仍在关闭。这个选项是否有用?或者它确实是关闭连接的HTTP级别,而不是TCP级别?
[HttpGet]
public async Task<JsonResult> LongPost(string testString)
{
ServicePointManager.SetTcpKeepAlive(true, 1000, 5000);
ServicePointManager.MaxServicePointIdleTime = 400000;
ServicePointManager.FindServicePoint(Request.Url).MaxIdleTime = 4000000;
var task = Task.Delay(360000);
await task;
return Json("Woke", JsonRequestBehavior.AllowGet);
}
GET /Home/LongPost?testString="abc" HTTP/1.1
Host: longgetrequest.azurewebsites.net
Cache-Control: no-cache
Postman-Token: bde0d996-8cf3-2b3f-20cd-d704016b29c6