我有一个解决方案,其中包括2个项目和2个类文件,通过引用调用。在我的一个项目中,我在Session_Start块中的Global.asax中有一些代码,它从数据库加载一些变量并将它们设置为会话变量。如果我在Global.asax中放置一个断点,我可以验证这些变量实际上是否正确设置。ASP.NET C#会话变量丢失
当我在我的任何代码隐藏模块或项目中的类中引用会话变量时,它们都在那里。但是如果我在引用调用的类之一(本质上是共享类)中引用它们,那么会话变量都是空的。
我使用HttpContext.Current.Session [“varName”]来访问类中的变量,就像标准一样。
有什么我需要考虑有权访问这些会话变量?它可能是一个命名空间问题?
那么,从“关注点分离”的角度来看,好像“其他”项目不应该直接意识到Web环境。你能否将会议中的任何价值传递给“其他项目”? – RQDQ
尝试:System.Web.HttpContext.Current.Session [“varName”]。另外,请注意您尝试读取会话的ASP.NET页面生命周期的哪个阶段 - 例如当您尝试阅读时会话尚未加载吗? –
Moe - 我正在根据用于访问系统的URL来定制登录屏幕上显示的徽标。当我通过时,我在global.asax中设置了一个断点,并首先停止,并设置变量。然后,下一个中断点是当我的登录模块尝试从数据库加载徽标时。它从该'其他'共享类调用一个过程来处理图像加载,并且数据库名称为空。我想我可以尝试从它正在工作的模块获取会话变量,并将它传递给加载图像的类中的方法...我会尝试。 –