【问题标题】:ASP.NET / Web.config: customErrors redirect only on a 404ASP.NET / Web.config:customErrors 仅在 404 上重定向
【发布时间】:2012-02-15 14:28:45
【问题描述】:

我有这种情况:

一个用户来到我的网站并点击了一个不再存在的链接,他应该被重定向到一个自定义的错误页面。 (有效)

如果用户做了某事引发了错误,他应该会看到 Stacktrace 和真正的 Errorpage。

这是我当前的 Web.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.web>
        <customErrors>
          <error statusCode="404" redirect="/errors/404.htm" />
        </customErrors>
        <compilation debug="true" strict="false" explicit="true" />
    </system.web>
</configuration>

使用此配置,404 将被重定向到正确的站点,但 HTTP 500 将显示如下:

“/”应用程序中的服务器错误

描述:服务器上出现应用程序错误。此应用程序的当前自定义错误设置阻止远程查看应用程序错误的详细信息(出于安全原因)。但是,本地服务器计算机上运行的浏览器可以查看它。

详细信息:要在远程计算机上查看此特定错误消息的详细信息,请在位于当前 Web 应用程序根目录的“web [.config”配置文件中创建一个标签。然后,此标记应将其“模式”属性设置为“关闭”。

[...]

但在这种情况下,我想显示堆栈跟踪。

我该怎么做?

注意:我们在 Linux 上使用 Mono Lighttpd 结构。

【问题讨论】:

    标签: asp.net .net mono web-config lighttpd


    【解决方案1】:

    在以下 web.config 条目中,未找到 (404) 条件会将用户发送到 PageNotFound.aspx

    使用 mode="Off" 并且每个人(本地和远程用户)都会看到错误详细信息。

    <customErrors mode="Off">
         <error statusCode="404" redirect="~/errorPages/PageNotFound.aspx" />
    </customErrors>
    

    使用 mode="RemoteOnly" 并且本地用户将看到带有堆栈跟踪和编译详细信息的详细错误页面。向远程用户显示 GeneralError.aspx 页面

    <customErrors mode="RemoteOnly" defaultRedirect="~/errorPages/GeneralError.aspx">
         <error statusCode="404" redirect="~/errorPages/PageNotFound.aspx" />
    </customErrors>
    

    【讨论】:

      【解决方案2】:

      Ray Van Halens 的答案是正确的,但这不是真正的问题。

      不显示堆栈跟踪的原因是单声道本身的错误。没有其他方法可以编写一个自己的错误页面来显示堆栈跟踪。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-18
        • 2018-05-02
        • 2013-12-01
        • 1970-01-01
        • 2022-07-07
        • 2021-07-31
        相关资源
        最近更新 更多