【发布时间】: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 中设置的其他方法),则更改将非常小。
有没有办法让这个工作?
【问题讨论】:
-
是
HttpContextnull?还是HttpContext.Current?还是HttpContext.Session? -
Security.cs代码是否在 Web 请求的上下文中执行?或者可能来自新线程或任务? -
如果您能提供minimal reproducible example,那就太好了。
-
HttpContext.Current does 工作,其中类参与当前请求。在您的示例中,您正在一行中执行 http 上下文会话的对象的 ToString() 。为了帮助了解发生了什么,请将其分成四行(获取当前上下文,然后获取会话,然后从会话中获取“用户”对象,然后执行 ToString())。这可能会为您提供线索,说明这在哪里没有达到您的预期。
标签: c# session-variables session-state