2

我在 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"。

4

1 回答 1

0

如果我正确理解您的话,您似乎可能超出了您需要做的事情。 这是一个很好的链接

看来您需要的是处理 global.asaxApplication_Error事件。这样你就可以随心所欲地处理它,而且你不会得到那个丑陋的 asp.net 错误屏幕。我创建的任何网络应用程序都会在其中放置一些代码来处理错误,这样用户就不会看到任何未格式化的“爆炸”

于 2011-11-30T15:24:43.387 回答