4

我有我的错误处理设置来跟踪所有异常并将我们需要的信息写入数据库并通过电子邮件发送给需要了解错误以便修复它的开发人员。我遇到的问题是在页面完全加载之前发生错误。在这种情况下,我要跟踪的会话变量在 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";     
}   

任何帮助是极大的赞赏。谢谢!

4

2 回答 2

4

你的所作所为并没有错,尽管

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

会比你的 try-catch 块更“外科手术”。

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

于 2009-03-21T03:46:01.550 回答
0

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

于 2009-03-21T03:40:58.970 回答