我在 StackOverflow 和其他网站上看到了许多与此类似的问题,但似乎没有任何东西可以解决我遇到的问题。
我正在尝试将站点配置为针对 ASP.NET 错误返回 500 状态代码和自定义错误页面(静态 HTML 文件),这些错误通常会返回 500(其中 customErrors 设置为“关闭”)和页面的 404 状态代码我们的系统报告为未找到(404 页面不是通过 IIS 设置的静态页面,它是由我们的 CMS 系统生成的)。
我在那里的一部分,但我碰到了一点砖墙。
目前,我能够返回正确的 404 状态代码,我们的系统会返回带有 404 状态代码的页面,但我现在无法为 ASP.NET 服务器错误返回 500 状态代码。我通过设置 Response.TrySkipIisCustomErrors = true 来管理它。然而,我的 500 个错误被证明更加复杂。如果我从 web.config 中删除 customErrors 配置部分,我会收到 500 错误,但这是丑陋的 ASP.NET YSOD。我似乎根本无法让它指向使用 IIS 的自定义页面,无论我对 httpErrors 配置部分使用什么设置,也无论我通过 IIS GUI 设置什么。如果我重新添加 customErrors 部分,我会得到我期望的自定义错误页面,但我会收到 200 或 302 错误(取决于 redirectMode 属性的值)。
有人有什么想法吗?
到目前为止,就 httpErrors 配置部分而言,我尝试了以下方法:
将 errorMode 设置为“Custom”并为 statusCode 为“500”和 subStatusCode 为“-1”的错误指定我的静态内容(首先删除现有的 500 错误)将 errorMode 设置为“Detailed”并为错误指定我的静态内容statusCode 为“500”,subStatusCode 为“-1”(首先删除现有的 500 错误)为上述两个配置选项设置 existingResponse="PassThrough"。