SessionState中未保留SessionState

时间:2011-10-04 22:35:54

标签: c# asp.net session-state

  

可能重复:
  Can I access session state from an HTTPModule?

我已经设置并使用SQLServer状态处理,它在我的项目中运行良好。但我有共享资源文件,提供从数据库加载图像的处理程序等。在此模块中,Session始终为Null。我尝试过以下方法:

  1. 会话变量的完整路径,即HttpContext.Current.Session [“varname”];
  2. 我已将sessionState行添加到web.config中,用于具有处理程序的用户控件文件,就像我对主项目所做的那样。
  3. 还有什么能让会话变量在模块中可用吗?我对.net比较新,所以我可能使用了不正确的术语。很清楚,我已经定义了“解决方案”。在这个解决方案中是一个名为CMS的“项目”。解决方案中还有另外两个项目 - 一个用于处理共享类,另一个用于处理程序。这些外部文件通过引用包含在主项目中(当然,或根本不起作用)。在这些“外部”项目中,我似乎无法访问Session变量。

    非常感谢任何帮助。 O,虽然我对RTFM类型的响应很好,但我之前提出的问题指出了很长的理论MSDN文档很少有用,因为它们对我的理解太深了。试着给一个兄弟一个休息吧?

2 个答案:

答案 0 :(得分:4)

您需要在类声明中使用IReadOnlySessionState或IRequiresSessionState接口,如下所示:

public sealed class MyHandler : IHttpHandler, IReadOnlySessionState {

答案 1 :(得分:1)

由于您使用了这两个术语,因此不确定您的是IHttpHandler还是IHttpModule。

对于处理程序,如果需要Session,则还需要实现IRequireSessionState。

如果要在HttpModule中访问会话状态,请确保将您的EventHandler添加到HttpApplications PreRequestHandlerExecute“事件,而不是”BeginRequest“事件。

另外看看 Can I access session state from an HTTPModule?