【问题标题】:Error Page when Site is Unreachable站点无法访问时的错误页面
【发布时间】:2016-02-02 10:32:18
【问题描述】:

我们将在服务器中进行 Windows 更新,并希望有一个自定义的错误页面,以避免用户将来报告间歇性错误。有什么想法吗?

【问题讨论】:

    标签: asp.net iis iis-7


    【解决方案1】:

    @Shirish 显示的自定义错误将起作用。
    但是在服务器重启和系统更新时间较长的情况下,该页面将不会显示,因为整个 IIS 和操作系统可能已关闭。因此,解决这个问题的唯一方法是在您的 Web 服务器前面安装某种(反向)代理服务器,该服务器将监控其运行状况,然后将所有请求故障转移到不同的服务器,或者只是提供一些错误错误页面,直到 Web 服务器重新上线。

    例如,如果您在 Azure 上进行托管,您可以在 Web 应用程序或虚拟机前面安装负载均衡器。如果您在同一个可用性集中创建两个服务,则负载均衡器可用。它将在某个指定的时间间隔(例如 5 秒)内监控每个服务的运行状况,然后相应地路由流量。您可以在升级第一个 VM 时打开第二个 VM/WebApp,以降低成本。

    【讨论】:

      【解决方案2】:

      在 web.config 文件中,将这些代码放入 <system.web></system.web> 并创建 Error 控制器和三个动作 Error500 等以及相应的视图页面。如果iis 返回status 500,则将显示Error500 页面。您可以创建自己的错误页面。

      <customErrors mode="On" defaultRedirect="Error">
        <error statusCode="500" redirect="~/Error/Error500" />
        <error statusCode="404" redirect="~/Error/Error404" />
        <error statusCode="403" redirect="~/Error/Error403" />
      </customErrors>
      

      【讨论】:

      • @ anand - 提供的代码在任何情况下都不起作用。因为当服务器关闭时,您提供的 url 将不会被执行。你会得到 IIS 服务器错误。所以没有代码的意义——
      • @Shirish 是对的,我试过了,但是当整个服务器机器宕机时就不行了。
      【解决方案3】:

      您可以在web.config- 中执行以下代码 -

      <configuration>
        <system.web>
          <customErrors defaultRedirect="GenericError.htm"
                        mode="RemoteOnly">
            <error statusCode="500"
                   redirect="InternalError.htm"/>
          </customErrors>
        </system.web>
      </configuration>
      

      有关错误处理的更多详细信息,请查看此 url-https://msdn.microsoft.com/en-us/library/bb397417.aspx

      【讨论】:

        猜你喜欢
        • 2017-12-07
        • 1970-01-01
        • 1970-01-01
        • 2021-05-13
        • 2016-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-01-07
        相关资源
        最近更新 更多