2012-08-30 28 views
0

如果我的web.config有: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,我怎麼能得到類似我怎麼看到黃屏錯誤頁面的堆棧跟蹤信息時,有沒有自定義錯誤頁,這是輸出到瀏覽器?

或者,因爲這是重定向到customerrorpage.aspx,在這一點上基本上是錯誤的,我不能訪問異常信息?

這是一個具有複雜虛擬目錄等的遺留應用程序,因此我可以在這一點上輕鬆地刪除其中一個錯誤庫。

回答

1

它的丟失。你甚至不在同一個請求中,因爲它是通過重定向完成的。

最後一點本身已經夠糟糕了(將某人重定向到錯誤頁面有什麼意義?),但這會影響到你。但是,redirectMode="ResponseRewrite"添加到customErrors元素,那麼解決此問題,也意味着Server.GetLastError()將工作。

0

您可以在服務器上的某個文件中記錄錯誤(您需要在Global.asax.cs中添加Application_Error事件處理程序),或者將此行放在webconfig中以獲得異常的黃色屏幕。

1

通過此SO帖子(http://stackoverflow.com/questions/343014/asp-net-custom-error-page-server-getlasterror-is-null),如果您正在運行.net 3.5 SP1,您可以使用customErrors元素上的redirectMode屬性。 http://msdn.microsoft.com/en-us/library/system.web.configuration.customerrorssection.redirectmode(v=vs.90).aspx

一旦你這樣做,你就必須從Server.GetLastError(訪問錯誤):在redirectMode

更多信息 http://msdn.microsoft.com/en-us/library/system.web.httpserverutility.getlasterror.aspx

編輯:你會使用ResponseRewrite模式redirectMode

+0

因此,我不能得到server.lasterror然後正確? – loyalflow

+0

是的,我讀到的方式是默認的customError模式做了重定向,這會丟失錯誤信息。 – Gromer

0

在您的global.asax中,您可以捕獲錯誤並將其保存在Error頁面中。

您覆蓋Application_Error以發現錯誤。

0

異常不會丟失。您可以撥打Server.GetLastError()以獲取最後拋出的異常。

因爲它返回一個Exception對象,您可以簡單地調用StackTrace來獲得完整的堆棧跟蹤。

+0

,但它重定向到我的自定義錯誤頁面,它的一個新的請求。 – loyalflow

相關問題