我们已将ASP.NET MVC应用程序部署到Azure应用服务。
如果请求的时间超过230秒,Azure将返回错误页面" 500 - 请求超时。 Web服务器无法在指定时间内响应。" - https://stackoverflow.com/a/38676086
我们正在进行更改以确保对Web请求执行的处理更少,但仍有可能会遇到这些限制。有谁知道是否有办法配置自定义错误页面而不是下面显示的一般错误页面?
答案 0 :(得分:0)
本文应该对您有所帮助,请记住,只有在请求到达网站时,自定义错误才有效。 http://benfoster.io/blog/aspnet-mvc-custom-error-pages
答案 1 :(得分: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视图。