ASP.NET / Web.config:customErrors仅在404上重定向

时间:2012-02-15 14:28:46

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

我有这种情况:

用户来到我的网站并关注链接,不再存在,他应该被重定向到自定义错误。 (有效)

如果用户做某事,那会引发错误,他应该看到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”配置文件中创建标记。然后,此标记应将其“mode”属性设置为“Off”。

     

[...]

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

我该怎么做?

注意:我们在Linux上使用Mono&lt; - FastCGI - &gt; Lighttpd构造。

2 个答案:

答案 0 :(得分:17)

在以下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>

答案 1 :(得分:0)

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

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