增加azure web app请求超时

时间:2015-09-24 07:09:18

标签: asp.net-mvc azure

有没有办法增加azure网络应用的请求超时?

如果我在2分钟左右的时间内延迟请求,则请求失败,没有错误(返回空白页)或模糊的503响应。

    public ActionResult Index()
    {
        System.Threading.Thread.Sleep(230000);
        return View();
    }

我需要运行一些长时间运行的请求(上传大型文件/大型pdf转换作业) - 有什么方法可以解决这个问题吗?我更愿意避免使用VM托管。我已经尝试将网络应用扩展到基本或标准计划,但它似乎没有任何区别。

6 个答案:

答案 0 :(得分:10)

不,您无法增加Azure App Services的超时(它是230秒)。您可以移动到托管在VM上的云服务或IIS,您可以在其中控制这些设置。您还可以移动到客户端发出请求的异步模型,获取某种票证或标识符,可以轮询以查看处理是否已完成。您可以选择Web应用程序的异步类型模型的许多示例。 价:https://social.msdn.microsoft.com/Forums/en-US/05f254a6-9b34-4eb2-a5f7-2a82fb40135f/time-out-after-230-seconds?forum=windowsazurewebsitespreview

答案 1 :(得分:4)

希望这会有所帮助https://azure.microsoft.com/en-us/blog/new-configurable-idle-timeout-for-azure-load-balancer/。但是我认为在执行一些繁重的工作时保持请求是个坏主意。 Imho,您可以更好地实施后台工作,并不时从客户端检查其状态。

答案 2 :(得分:1)

如果应该长时间运行,请尝试将您的操作设置为异步,以避免Web服务器出现死锁:

public async Task<ActionResult> Index()
{
    await Task.Delay(230000);
    return View();
}

您可以在控制器的代码中设置脚本超时:

HttpContext.Current.Server.ScriptTimeout = 300;

请注意,HttpContext是基于每个请求实例化的,因此它会在下一个请求时返回到默认值

答案 3 :(得分:1)

您可以使用自动化脚本部署Web应用,并将此行添加到“资源”下:

        {
          "name": "WEBSITES_CONTAINER_START_TIME_LIMIT",
          "value": 1800
        },

其中值默认为230,但可以增加到1800。 您还可以在“应用程序设置”下添加一个名为WEBSITES_CONTAINER_START_TIME_LIMIT并具有所需秒数的新设置。

答案 4 :(得分:0)

您可以在此处使用我的技巧代码来绕过230秒的限制。总之,我们只是继续写空的html值“ \ r \ n”来响应,以使ALB知道我们正在返回数据,但实际上我们正在处理请求。

Sample code

答案 5 :(得分:-4)

You have to some changes in web.config

<system.webServer> 

<monitoring> 

<triggers>

<statusCode>

<addstatusCode="500"subStatusCode="0"win32StatusCode="0"

count="10"timeInterval="00:00:30" /> 

</statusCode>

</triggers>

<actionsvalue="Recycle" /> 

</monitoring> 

For more:

Connection Timeout (Timeout Expired) on Azure Web App Site