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

问题描述 投票:1回答:2

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

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

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

Azure 500 - The request timed out page

c# asp.net-mvc azure azure-web-sites
2个回答
0
投票

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

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

对于变通方法,您可以指定操作的超时,并在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视图。


0
投票

本文应该对您有所帮助,请记住,只有在请求到达网站时,自定义错误才有效。 http://benfoster.io/blog/aspnet-mvc-custom-error-pages

© www.soinside.com 2019 - 2024. All rights reserved.