当我尝试在 Global.aspx 中获取 Session 值时,我收到错误消息:
我尝试了另一种方法来获取会话值,结果相同,但消息不同:
此错误发生在 Application_Error 方法中,并且 Session 不为空,但它表明它为空。我已将此会话代码置于 (HttpContext.Current.Session != null) 条件下,因此它工作正常,但我想要使用此方法无法获得的会话值。
请帮我。谢谢
当我尝试在 Global.aspx 中获取 Session 值时,我收到错误消息:
我尝试了另一种方法来获取会话值,结果相同,但消息不同:
此错误发生在 Application_Error 方法中,并且 Session 不为空,但它表明它为空。我已将此会话代码置于 (HttpContext.Current.Session != null) 条件下,因此它工作正常,但我想要使用此方法无法获得的会话值。
请帮我。谢谢
Global.asax 文件通常用于跟踪应用程序级别的事件,并且这些事件可以在不同的登录用户之间共享,因此可能无法在 global.asax 事件中获取会话值。
对于错误记录,您可以使用 httpModule
以下链接用于使用 httpModule 进行错误记录
http://www.codeproject.com/Articles/16171/An-HTTP-Module-for-ASP-NET-Error-Handling
以下链接用于在 httpModule 中获取会话值
application_error 捕获应用程序中的所有异常。您的错误可能源于没有会话的地方。
(快速示例:来自异步操作或自定义创建的线程) 最佳测试:在尝试任何会话之前测试 HttpContext.current != null 和 HttpContext.current.session != null 。
无论如何使用会话是不好的
哦,最后一点:如果你在应用程序错误中设置了一个断点而不是“catch”,那么你的错误 thred/async 可以在 Visual Studio 停止进程之前完成操作。所以在这种情况下你可以有一个会话,而在正常运行(没有断点)你会得到一个异常
试试这个...
string value = HttpContext.Current.Session["user"] as string;
if (String.IsNullOrEmpty(value))
{
//your Code here
}