显示“504 Gateway Timeout error”的自定义错误

时间:2017-01-11 15:51:22

标签: c# asp.net .net asp.net-mvc asp.net-mvc-5

我正在开发ASP.net MVC-5项目,我是初学者。截至目前,我了解MVC的基础知识,能够显示页面并发布帖子和获取请求。但我遇到一个问题,我得到“504网关超时错误”,我需要实现一个功能,如果客户端得到“504网关超时错误”我应该能够显示一个特定的页面,如“有问题”而不是标准错误。从下面开始是我做的。

  <system.web>
    <compilation debug="true" targetFramework="4.5.1" />
    <httpRuntime targetFramework="4.5" />
    <customErrors mode="On" redirectMode="ResponseRewrite">
    </customErrors>
  </system.web>

但我还需要改变或添加什么。有人可以在这里指导我。我迷路了。

2 个答案:

答案 0 :(得分:3)

如果您的ASP.NET MVC应用程序由IIS(或其他代理服务器)托管,则IIS会返回504错误并将其发送到浏览器,因为您的应用程序未及时响应请求。 IIS已超时(可为每个网站配置),如果达到此值,则返回504。

在这种情况下,您无法在应用程序中定义自定义错误页面,因为它没有做出反应。

您可以将IIS配置为服务器自定义错误页面。这个video tutorial显示了如何执行此操作。

答案 1 :(得分:0)

ASP实际上并没有返回那些页面,实际上是IIS。

Check out this SO on configuring IIS to let you return custom error pages

基本上您需要配置这些设置:

<system.web>
    <customErrors mode="On" defaultRedirect="~/Error">
      <!--Use whatever paths you need here, along with the accompanying status code -->
      <error redirect="~/Error/NotFound" statusCode="404" />
    </customErrors>
</system.web>

并创建一个控制器来处理错误,如下所示:

public class ErrorController : Controller
{
    public ViewResult Index()
    {
        return View();
    }
    public ViewResult NotFound()
    {
        Response.StatusCode = 404;  
        return View();
    }
}

除了您需要匹配Action的任何视图。