2017-01-11 69 views
1

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

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

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

+1

是你的服务器的代理服务器,并抛出504或你使用的是代理服务器? – Steve

+0

我只是一个初学者。你能告诉我如何找到答案。请原谅我的无知。 – Unbreakable

+0

什么@Steve试图得到的是,如果您的网站有一个前端代理(如负载平衡器),那么负载平衡器是“响应”用户/浏览器(这不是你的应用程序/网站) 。所以问题是你是否能控制这个代理。虽然它似乎有一个应用程序问题,它不会“及时”响应(无论在代理中设置了超时值)。 'user' <-->'负载平衡器/代理'<--->您的网站/应用程序..老板... – EdSF

回答

2

如果你的ASP.NET MVC应用程序由IIS(或另一个代理服务器)托管,然后由IIS返回504错误并发送到浏览器,因为您的应用程序没有及时响应请求。IIS已超时(为每个网站配置)并且如果t他到达了,然后504返回。

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

Yout可以将IIS配置为服务器自定义错误页面。这video tutorial显示如何做到这一点。

+0

那么,如何在发生这种情况时显示页面? – Unbreakable

+0

@Unbreakable config IIS – Steve

+0

任何链接请问如何为初学者配置?真的很感谢帮助。 – Unbreakable

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。

+0

您可以在发布的链接的答案中解释什么是'redirect =“〜/ 404Redirect /”'。我是否需要制作一个控制器和一个视图。或只是视图就足够了? – Unbreakable

+0

如果您希望MVC处理它,您需要一个控制器。 我将链接更改为更好的链接,请检查此链接。 –

+0

我会试试看,并会回复给你。只是一件小事。做,我也需要对IIS或其他东西进行任何更改。我将更改配置文件,添加控制器并相应地添加视图。我是否需要打开IIS服务器并进行任何修改。 – Unbreakable