每当我们网站上发生未处理的异常时,我想:
第一次也是最后一次我已经工作了很长时间,但第二次却给我带来了一些问题。我的Global.asax.vb包括:
Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
' Send exception report
Dim ex As System.Exception = Nothing
If HttpContext.Current IsNot Nothing AndAlso HttpContext.Current.Server IsNot Nothing Then
ex = HttpContext.Current.Server.GetLastError
End If
Dim eh As New ErrorHandling(ex)
eh.SendError()
' Clear session
If HttpContext.Current IsNot Nothing AndAlso HttpContext.Current.Session IsNot Nothing Then
HttpContext.Current.Session.Clear()
End If
' User will now be sent to the 500 error page (by the CustomError setting in web.config)
End Sub
当我运行调试时,我可以看到会话被清除,但是在下一页上,会话又回来了!
我最终找到了一个引用,表明除非调用Server.ClearError,否则不会保存对session的更改。不幸的是,如果我添加它(在设置“ex”的行的正下方),那么CustomErrors重定向似乎没有启动,我留下了空白页?
有解决方法吗?
答案 0 :(得分:1)
Brunis - 在回答您的问题时(我遇到了同样的问题)您的应用程序可能在之前的点崩溃了application_error,您可以访问会话信息,例如Begin_Request阶段。
答案 1 :(得分:0)
您可以在自定义错误页面上清除会话吗?
此外,您可能希望了解如何使用ELMAH。它使您尝试做的所有事情变得简单而且令人敬畏。