Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 显示“的自定义错误”;504网关超时错误“;_C#_Asp.net_.net_Asp.net Mvc_Asp.net Mvc 5 - Fatal编程技术网

C# 显示“的自定义错误”;504网关超时错误“;

C# 显示“的自定义错误”;504网关超时错误“;,c#,asp.net,.net,asp.net-mvc,asp.net-mvc-5,C#,Asp.net,.net,Asp.net Mvc,Asp.net Mvc 5,我正在从事ASP.NETMVC-5项目,我是一名初学者。到目前为止,我已经掌握了MVC的基本知识,能够显示页面,发出post和get请求。但是我遇到了一个问题,我得到了“504网关超时错误”,我需要实现一个功能,如果客户端得到“504网关超时错误”,我应该能够显示一个特定的页面,比如“有什么地方出错”,而不是标准错误。下面是我所做的 <system.web> <compilation debug="true" targetFramework="4.5.1" />

我正在从事ASP.NETMVC-5项目,我是一名初学者。到目前为止,我已经掌握了MVC的基本知识,能够显示页面,发出post和get请求。但是我遇到了一个问题,我得到了“504网关超时错误”,我需要实现一个功能,如果客户端得到“504网关超时错误”,我应该能够显示一个特定的页面,比如“有什么地方出错”,而不是标准错误。下面是我所做的

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


但是我还需要更改或添加什么。有人能在这里指导我吗?我迷路了。

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

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


您可以将IIS配置为服务器自定义错误页。这说明了如何执行此操作。

ASP实际上不返回这些页,实际上是IIS


基本上,您需要配置以下设置:

<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>

以及与操作匹配所需的任何视图。

您的服务器是代理服务器并抛出504,还是您使用代理服务器?我只是一个初学者。您能告诉我如何找到它吗。请原谅我的无知。@Steve试图达到的目的是,如果您的站点有前端代理(如负载平衡器),那么负载平衡器就是“响应”用户/浏览器(它不是你的应用程序/网站)的那个。所以问题是你是否可以控制该代理。尽管它似乎存在应用程序问题,无法“及时”响应(无论代理中设置的超时值如何).
用户
负载平衡器/代理
您的网站/应用..Hth…没有负载平衡器等等。网站托管在IIS服务器上,我可以完全访问IIS设置,所有代码都在IIS上。如果这是对某个外部(支付API)的调用,则在调用中处理(调用外部支付API的API客户端),而不需要对整个应用程序进行配置更改。换句话说,将其保留在“付款范围”中,并将其作为“失败的付款确认/条件”处理(并向用户发送消息)。大多数支付API都会有错误代码和如何处理它们的建议。Hth…@Unbreakable config IISAny链接请转到如何为初学者配置?非常感谢您的帮助。@Unbreakable-我编辑了我的答案并发布了此链接,其中显示了如何在IIS中设置自定义错误页。非常感谢您的回复。实际上我的经理希望我以某种方式在ASP.net代码中捕获错误,并从中显示错误消息。我的意思是,他不希望我通过在IIS“erro”页面中进行更改来重定向到页面"设置。是否仍然可以在ASP.net代码中捕获它,然后在不更改设置中IIS错误页的情况下显示消息。我可以在IIS web配置文件中进行更改我们有一些筛选器、RegisterGlobalFilter、GlobalFilterCollection以及所有这些。请您在这里给我介绍一下。因为我们正在谈论o如果出现504错误(而不是404或500),则无法在ASP.NET代码中捕获该错误。IIS正在等待ASP.NET代码的响应,该响应未被发送(DB慢或其他原因)。因此,IIS在等待超时后启动,发送自己的错误页(可以配置)并关闭连接,而ASP.NET代码中的请求可能仍然很忙。因此没有重定向,IIS只是关闭连接(以避免无休止地接受请求造成的污染)。请您解释一下什么是
redirect=“~/404Redirect/”
在你发布的链接的答案中。我需要创建一个控制器和一个视图吗?或者只创建一个视图就足够了?如果你想让MVC来处理它,你需要一个控制器。我已将链接更改为更好的链接,请查看此链接。我会尝试并返回给你。只是一件小事。我也需要对IIS或其他内容进行任何更改。我将更改配置文件、添加控制器并相应地添加视图。是否需要打开IIS服务器并进行任何修改。通过更改配置文件,您正在更改IIS。IIS主要只是这些配置的GUIfiles@AndrewDiamond-IIS不仅仅是“这些配置文件的GUI”。。。。。
public class ErrorController : Controller
{
    public ViewResult Index()
    {
        return View();
    }
    public ViewResult NotFound()
    {
        Response.StatusCode = 404;  
        return View();
    }
}