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