2010-08-19 92 views
2

我有一个带有5个.ashx HTTPHandlers实现IRequiresSessionState或IReadOnlySessionState的ASP.NET应用程序。在HttpHandlers中保留会话变量

在调用第一个处理函数时,我创建一个变量并将其存储在会话中。

当我调用下一个HttpHandler时,该变量在会话对象中不可用。

我使用context.Session。

我有一个global.asax我检索sessionId。

有没有办法在HttpHandlers之间保存会话变量,还是每个Handler都有自己的会话?

回答

3

了,得心脏病的这个位置了很好的讨论:

http://weblogs.asp.net/ashicmahtab/archive/2008/09/18/how-to-use-session-values-in-an-httphandler.aspx

基本上,你需要做的是这样的:

public class MyHandler:IHttpHandler,IRequiresSessionState 

HTH的。

这应该在处理程序之间保持会话状态。也就是说,当您登录时,只有一个会话可用于您进入该域的所有请求。我建议您验证您确实已登录。缓存当然会起作用,因为这对所有会话都很常见,但在服务器上会更加昂贵,因为它不会轻易消失。

+1

我已经继承了IRequiresSessionState。我想要的是保持跨HTTPHandler的会话值,因为HTTPHandler的每个请求获得一个新的会话。基本上我已经决定使用应用程序缓存来代替。 – User48765902 2010-08-20 13:10:57