在Global.asax中的Application_Error方法中,我嘗試從會話狀態中檢索值。訪問Global.Application_Error中的SessionState
只要我拋出異常,我就可以訪問會話狀態。 EG:
thow new Exception("Test exception");
但是,如果它是一個未處理的異常,我試圖訪問會話狀態時,遇到下列錯誤:「會話狀態不是在這種情況下可用」。
爲什麼在行爲上的差異,是否有工作?
謝謝。
在Global.asax中的Application_Error方法中,我嘗試從會話狀態中檢索值。訪問Global.Application_Error中的SessionState
只要我拋出異常,我就可以訪問會話狀態。 EG:
thow new Exception("Test exception");
但是,如果它是一個未處理的異常,我試圖訪問會話狀態時,遇到下列錯誤:「會話狀態不是在這種情況下可用」。
爲什麼在行爲上的差異,是否有工作?
謝謝。
我想你試圖通過HttpContext.Current.Session訪問會話。我相信行爲的不同之處在於,在非註冊異常處理程序中,請求已進入「Failsafe」模式,並且頁面生命週期(包括加載和處置會話)已完成。
退房的lifecycle此頁面瞭解更多信息
我討厭ASP.NET有時...
所以產生使用錯誤:
Response.Redirect("thispagedoesnotexist.aspx", false);
上面一行將重定向到會話狀態不可用的Application_Error
但是
throw new Exception("test");
上面一行將重定向與會話狀態可用
因此而不是做這一切的Application_Error到的Application_Error,在一個地方,我將不得不使用try /捕獲通過了我的代碼捕獲錯誤。然後從會話,日誌和電子郵件錯誤詳細信息中收集數據,然後重定向到友好的錯誤頁面。很多額外的代碼..
結論:Application_Error是毫無價值的。
這是奇怪的行爲。我使用類似的設置來記錄通知目的的例外情況的表格和會話信息,而沒有問題。我將在早上工作時覈實這一點。 :) – leppie 2008-11-18 20:55:07
我不確定我遵循你正在嘗試做什麼。如果你手動拋出異常一切正常?你可以給出一個更完整的代碼示例什麼有效,什麼沒有? – 2008-11-18 21:30:08