2011-10-04 62 views
1

可能重复:
Can I access session state from an HTTPModule?SessionState的不处理程序被保存

我已成立和正在使用SQLServer的国家处理和它运作良好,我的项目中。但是我共享资源文件,该文件提供了用于从数据库加载图像的处理程序等。在此模块中,会话始终为空。我试过以下内容:

  1. Session变量的完整路径,即HttpContext.Current.Session [“varname”];
  2. 我已将sessionState行添加到具有处理程序的用户控件文件的web.config中,就像我为主项目所做的一样。

还有什么可以使模块中的会话变量可用吗?我对.net比较陌生,所以我可能使用了错误的术语。很明显,我有一个'解决方案'的定义。在这个解决方案中是一个叫做CMS的项目。解决方案中还有两个项目 - 一个用于处理共享类和一个用于处理程序。这些外部文件在主项目中通过引用包含(当然,或根本不起作用)。在这些'外部'项目中,我似乎无法访问会话变量。

任何帮助是极大的赞赏。 O,虽然我对RTFM类型的回复很好,但我之前提出的问题指向了理论上很长的MSDN文档,因为这些文档对我的理解来说太深了。试着给一个兄弟休息一下吧?

+0

定式两份。 http://stackoverflow.com/search?q=irequiressessionstate – tomfanning

回答

4

您需要使用任一IReadOnlySessionState或IRequiresSessionState接口的类的声明,是这样的:如果

public sealed class MyHandler : IHttpHandler, IReadOnlySessionState { 
+0

IRequiresSessionState没有工作,但IReadOnlySessionState做到了!谢谢! –

+0

IRequiresSessionState正常工作,必须是其他原因,它不适合你。 – tomfanning

+0

是的,可能是一个错字。无论如何,我只想读取变量,所以这个工作。 –

1

不知道你是一个IHttpHandler的还是因为你使用这两个词一个IHttpModule的。

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

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

也期待在 Can I access session state from an HTTPModule?

+0

谢谢。我实际上正在使用两者。这个链接帮助! –