Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Azure ASP.net WebApp请求超时_C#_Asp.net Mvc_Azure - Fatal编程技术网

C# Azure ASP.net WebApp请求超时

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

我已将ASP.net MVC web应用程序部署到Azure应用程序服务

我从我的站点向某个从DB(DbContext)获取数据的控制器方法发出GET请求。有时,从数据库获取数据的过程可能需要4分钟以上。这意味着我的请求在4分钟内没有任何操作。在Azure终止连接后-我收到消息:

500-请求超时。web服务器失败 在指定时间内作出响应

这是一个方法示例:

 [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.3

230秒。就这样。这是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