当 .NET 应用程序在 SQL 连接上失败时,IIS 无法提供自定义错误页面

问题描述 投票:0回答:1

在这种情况下,我将不胜感激任何帮助。

我有一个在 IIS 上运行的 .NET Framework 4.5.1 Web 应用程序。我在这个应用程序的根目录中有两个物理文件:
错误404.html
错误500.html

在“system.web”下的 web.config 中,我创建了此配置以提供来自 .NET Framework 的自定义错误页面:

<customErrors mode="RemoteOnly" defaultRedirect="/Error500.html" redirectMode="ResponseRewrite">
      <error statusCode="404" redirect="/Error404.html" />
      <error statusCode="500" redirect="/Error500.html" />
</customErrors>

在“system.webServer”下的 web.config 中,我创建了此配置以从 IIS Web 服务器提供自定义错误页面:

<httpErrors errorMode="DetailedLocalOnly" existingResponse="Auto">
  <remove statusCode="404" />
  <remove statusCode="500" /> 
  <error statusCode="404" path="/Error404.html" responseMode="ExecuteURL"/>
  <error statusCode="500" path="/Error500.html" responseMode="ExecuteURL"/>
</httpErrors>

我的目标是防止从互联网(互联网用户)看到详细的错误。但是我想在我的本地主机上查看详细的错误。

所以到目前为止,一切都运行良好。但是,当我将 web.config 中的连接字符串更改为不存在的主机(TCP 提供程序,错误:0 - 不知道这样的主机。)时,这些自定义错误页面的规则不再起作用。

从互联网上我收到此错误,而不是我的自定义错误页面:

Server Error in '/' Application.
Runtime Error
Description: An exception occurred while processing your request. Additionally, another exception occurred while executing the custom error page for the first exception. The request has been terminated.

为什么我无法从互联网上看到我的自定义错误页面?

.net web iis webserver custom-error-pages
1个回答
0
投票

好吧,我想我现在明白了: 我无法提供自定义错误页面,因为整个应用程序池已损坏。所以 .NET 或 IIS 作为 Web 服务器不能做任何事情 - 没有重定向,没有执行 url,没有文件内容服务,什么都没有......这是因为应用程序池本身不工作。要使自定义错误页面正常工作,应用程序池必须正在运行。就我而言,应用程序池未运行,因为在应用程序池初始化期间,出现异常导致应用程序池损坏/未运行。

我现在想到的唯一方法是使用反向代理服务器,我可以在其中设置自定义错误页面,以防后端无法像在这种情况下那样工作。

© www.soinside.com 2019 - 2024. All rights reserved.