C# web.config中的自定义错误页,是否会丢失错误信息?

C# web.config中的自定义错误页,是否会丢失错误信息?,c#,asp.net,error-handling,C#,Asp.net,Error Handling,如果my web.config具有: <customErrors mode="Off" defaultRedirect="CustomErrorPage.aspx"> <error statusCode="401" redirect="~/CustomErrorPage.aspx?statusCode=401" /> <error statusCode="403" redirect="~/CustomErrorPage.aspx?status

如果my web.config具有:

<customErrors mode="Off" defaultRedirect="CustomErrorPage.aspx">
      <error statusCode="401" redirect="~/CustomErrorPage.aspx?statusCode=401" />
      <error statusCode="403" redirect="~/CustomErrorPage.aspx?statusCode=403" />
      <error statusCode="404" redirect="~/CustomErrorPage.aspx?statusCode=404" />
      ...
</customErrors>

...
现在在我的CustomErrorPage.aspx中,当没有自定义错误页面并将其输出到浏览器时,如何获得类似于我看到的黄色屏幕错误页面的stacktrace信息

或者,因为这是重定向到customerrorpage.aspx,所以此时错误是否基本上丢失,并且我无法访问异常信息?


这是一个具有复杂虚拟目录等的遗留应用程序。因此,此时我可以很容易地删除其中一个错误库。

您可以在服务器上的某个文件中记录错误(您需要在Global.asax.cs中添加应用程序错误事件处理程序),或者在webconfig中删除这一行以获得黄色屏幕,但有例外。

根据本文(http://stackoverflow.com/questions/343014/asp-net-custom-error-page-server-getlasterror-is-null),如果您正在运行.Net 3.5 SP1,则可以在
customErrors
元素上使用
redirectMode
属性

有关重定向模式的详细信息:

完成此操作后,您将可以从服务器访问错误。GetLastError():


编辑:您将在全局中使用
ResponseRewrite
模式进行
redirectMode

。您可以捕获错误并将其保存以在错误页面中检索


您重写应用程序错误以捕获错误。

异常不会丢失。您可以调用以获取引发的最后一个异常


由于它返回一个
异常
对象,您只需获取call
StackTrace
即可获取完整的堆栈跟踪。

使用GetLastError,这允许您(奇怪的是)获取发生的最后一个错误


它丢失了。您甚至不在同一个请求中,因为它是通过重定向完成的


最后一点本身已经够糟糕的了(将某人重定向到错误页面有什么意义?),但在这里它会影响您。但是,将
redirectMode=“ResponseRewrite”
添加到
customErrors
元素后,这就解决了这个问题,也意味着
Server.GetLastError()
将正常工作。

因此目前我无法获取服务器。lasterror然后更正?是的,我读取默认customError模式的方式会重定向,从而丢失错误信息。