C# web.config中的自定义错误页,是否会丢失错误信息?
如果my 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
<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
。您可以捕获错误并将其保存以在错误页面中检索
您重写应用程序错误以捕获错误。异常不会丢失。您可以调用以获取引发的最后一个异常
由于它返回一个
异常
对象,您只需获取callStackTrace
即可获取完整的堆栈跟踪。使用GetLastError,这允许您(奇怪的是)获取发生的最后一个错误
它丢失了。您甚至不在同一个请求中,因为它是通过重定向完成的
最后一点本身已经够糟糕的了(将某人重定向到错误页面有什么意义?),但在这里它会影响您。但是,将
redirectMode=“ResponseRewrite”
添加到customErrors
元素后,这就解决了这个问题,也意味着Server.GetLastError()
将正常工作。因此目前我无法获取服务器。lasterror然后更正?是的,我读取默认customError模式的方式会重定向,从而丢失错误信息。