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

Lyr*_*yra 9 .net asp.net mono web-config lighttpd

我有这种情况:

用户来到我的网站并关注链接,不再存在,他应该被重定向到自定义errorpage.(这样可行)

如果用户做某事,那会引发错误,他应该看到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>
Run Code Online (Sandbox Code Playgroud)

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

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

说明:服务器上发生应用程序错误.此应用程序的当前自定义错误设置可防止远程查看应用程序错误的详细信息(出于安全原因).但是,它可以由运行在本地服务器计算机上的浏览器查看.

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

[...]

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

我怎样才能做到这一点?

注意:我们在Linux上使用Mono < - FastCGI - > Lighttpd构造.

小智 18

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

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

<customErrors mode="Off">
     <error statusCode="404" redirect="~/errorPages/PageNotFound.aspx" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)

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

<customErrors mode="RemoteOnly" defaultRedirect="~/errorPages/GeneralError.aspx">
     <error statusCode="404" redirect="~/errorPages/PageNotFound.aspx" />
</customErrors>
Run Code Online (Sandbox Code Playgroud)


Lyr*_*yra 0

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

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