【问题标题】:Accessing Session in Class File访问类文件中的会话
【发布时间】:2018-05-24 13:17:14
【问题描述】:

我正在将项目升级到较新版本的 Visual Studio、.Net Framework 和我们的应用程序母版页。不幸的是,执行此操作时,某些代码不再有效。

在我的 default.aspx.cs 页面上,我设置了一个会话变量: 会话[“用户”] = sUser;

我需要在 security.cs 文件(不是代码隐藏)中访问此会话变量。不幸的是,每次我尝试访问它时: string sUser = HttpContext.Current.Session["user"].ToString();

我收到“'HttpContext.Current.Session["user"]' 引发了 'System.NullReferenceException' 类型的异常”错误。

我了解,根据设计,类文件无权访问 Session,但我希望有某种方法可以访问它以节省大量工作。如果我无法访问 Session,我将需要更改大量代码以将用户传递到一堆类文件中。如果我能以某种方式使用 session(或在 default.aspx.cs 文件的 page_load 中设置的其他方法),则更改将非常小。

有没有办法让这个工作?

【问题讨论】:

  • HttpContext null?还是HttpContext.Current?还是HttpContext.Session
  • Security.cs 代码是否在 Web 请求的上下文中执行?或者可能来自新线程或任务?
  • 如果您能提供minimal reproducible example,那就太好了。
  • HttpContext.Current does 工作,其中类参与当前请求。在您的示例中,您正在一行中执行 http 上下文会话的对象的 ToString() 。为了帮助了解发生了什么,请将其分成四行(获取当前上下文,然后获取会话,然后从会话中获取“用户”对象,然后执行 ToString())。这可能会为您提供线索,说明这在哪里没有达到您的预期。

标签: c# session-variables session-state


【解决方案1】:

感谢大家的帮助。你帮我找到了答案。这是我需要的解决方案:

How to access Session in .ashx file?

【讨论】:

    猜你喜欢
    • 2012-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    相关资源
    最近更新 更多