3

当我尝试在 Global.aspx 中获取 Session 值时,我收到错误消息:

在此处输入图像描述

我尝试了另一种方法来获取会话值,结果相同,但消息不同:

在此处输入图像描述

此错误发生在 Application_Error 方法中,并且 Session 不为空,但它表明它为空。我已将此会话代码置于 (HttpContext.Current.Session != null) 条件下,因此它工作正常,但我想要使用此方法无法获得的会话值。

在此处输入图像描述

请帮我。谢谢

4

3 回答 3

3

Global.asax 文件通常用于跟踪应用程序级别的事件,并且这些事件可以在不同的登录用户之间共享,因此可能无法在 global.asax 事件中获取会话值。

对于错误记录,您可以使用 httpModule

以下链接用于使用 httpModule 进行错误记录

http://www.codeproject.com/Articles/16171/An-HTTP-Module-for-ASP-NET-Error-Handling

以下链接用于在 httpModule 中获取会话值

我可以从 HTTPModule 访问会话状态吗?

于 2016-02-16T07:49:36.803 回答
1

application_error 捕获应用程序中的所有异常。您的错误可能源于没有会话的地方。

(快速示例:来自异步操作或自定义创建的线程) 最佳测试:在尝试任何会话之前测试 HttpContext.current != null 和 HttpContext.current.session != null 。

无论如何使用会话是不好的

哦,最后一点:如果你在应用程序错误中设置了一个断点而不是“catch”,那么你的错误 thred/async 可以在 Visual Studio 停止进程之前完成操作。所以在这种情况下你可以有一个会话,而在正常运行(没有断点)你会得到一个异常

于 2016-02-16T07:08:47.740 回答
1

试试这个...

string value = HttpContext.Current.Session["user"] as string;

if (String.IsNullOrEmpty(value))
{
    //your Code here
}
于 2016-02-16T07:54:28.300 回答