Global.asax中的ASP.NET C#Application_Error无法访问Session变量

时间:2009-03-21 00:17:40

标签: c# session global

我有我的错误处理设置来跟踪所有异常并将我们需要的信息写入数据库并通过电子邮件发送出需要了解错误的开发人员以便修复它。我遇到的问题是在页面完全加载之前发生错误。在这种情况下,我要跟踪的会话变量在Application_Error中不可用。所以我执行以下操作以便在错误处理中没有出错,但必须有更好的方法。此外,如果页面加载并且在提交表单时发生错误,则会话变量可用。

try
{
    user_name = System.Web.HttpContext.Current.Session["User_Name"].ToString();
    user_number = System.Convert.ToInt32(System.Web.HttpContext.Current.Session["User_Number"].ToString());
}
catch (Exception ex)
{
    user_number = 0; 
    user_name = "N/A";     
}   

非常感谢任何帮助。 谢谢!

2 个答案:

答案 0 :(得分:4)

你正在做的事情没有错,虽然是

if ( null != System.Web.HttpContext.Current.Session )

比你的试捕块更“手术”。

在AcquireRequestState事件之前,会话未初始化,因此在此点之前发生的任何错误都不会有会话变量可用。

答案 1 :(得分:0)

这是你需要做的。用户可以通过书签或知道URL转到任何页面。因此,在设置任何值之前,用户可能会检索页面。因此,您需要做的是确保代码不会中断。