繁体   English   中英

Azure“ 500-请求超时”自定义错误页面

[英]Azure “500 - The request timed out” custom error page

我们已将ASP.NET MVC应用程序部署到Azure应用服务。

如果请求花费的时间超过230秒,Azure将返回错误页面“ 500-请求超时。Web服务器无法在指定的时间内响应。” -https://stackoverflow.com/a/38676086

我们正在进行更改以确保对Web请求执行的处理更少,但是仍然有可能会遇到这些限制。 有谁知道是否有一种方法可以配置要显示的自定义错误页面,而不是下面显示的一般错误页面?

Azure 500-请求超时页面

本文应为您提供帮助,请记住,仅当请求到达网站时,自定义错误才起作用。 http://benfoster.io/blog/aspnet-mvc-custom-error-pages

我们正在进行更改以确保对Web请求执行的处理更少,但是仍然有可能会遇到这些限制。 有谁知道是否有一种方法可以配置要显示的自定义错误页面,而不是下面显示的一般错误页面?

由于您无法克服Azure App Service中有关请求超时(230秒)的限制,因此您需要优化服务器端处理,或者需要捕获异常并自定义响应。 我试图通过使用Application_Error事件和自定义HTTP模块捕获异常,但最终失败了。

要解决此问题,您可以为操作指定超时,并在Azure App Service抛出超时异常之前捕获应用程序中的异常,然后可以添加自定义错误页面。 您可以利用AsyncTimeoutAttribute并按以下方式定义操作:

[AsyncTimeout(duration:10000)] //The timeout value in milliseconds.
[HandleError(ExceptionType = typeof(TimeoutException),
                            View = "TimeoutError")]
public async Task<ActionResult> LongTask(CancellationToken cancellationToken)
{
    await Task.Delay(TimeSpan.FromSeconds(20), cancellationToken);
    return Content("Done");
}

注意: HandleErrorAttribute需要在Web.Config中启用customErrors 如果发生TimeoutException ,则将您重定向到您定义的特定MVC视图。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM