我想在应用程序错误事件中读取会话id,但总是得到错误“会话状态在此上下文中不可用”。为什么?奇怪的是,我在另一个asp.net应用程序中使用了相同的代码,一切都运行得很好。
void Application_Error(object sender, EventArgs e)
{
var sessionId = Session.SessionID;
//skipped code
}
发布于 2011-08-04 19:25:31
会话对象可能不可用,这取决于错误发生的时间。
例如,如果在Begin_Request上发生错误,会话将不可用,因为它尚未创建。
因此,总而言之,它有时会工作,有时不工作,这取决于错误发生的时间。
最好在访问会话id之前检查会话对象的状态,例如
HttpContext context = HttpContext.Current;
if (context != null && context.Session != null) ...
发布于 2013-01-04 18:57:00
检查映射到设计部件中的控件或问题的c#中是否缺少任何事件
发布于 2011-08-04 19:26:27
Application_error可以在会话不存在的情况下触发,例如,当垃圾收集器清理时。错误的来源可能不是用户线程。
先检查session是否为null。
西蒙
https://stackoverflow.com/questions/6940425
复制相似问题