保留HttpHandlers的会话变量

时间:2010-08-19 21:43:27

标签: asp.net session httphandler

我有一个带有5个.ashx HTTPHandlers的ASP.NET应用程序,它实现了IRequiresSessionState或IReadOnlySessionState。

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

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

我使用的是context.Session。

我有一个global.asax,我在其中检索sessionId。

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

1 个答案:

答案 0 :(得分:3)

HeartAttack在这里有一个很好的讨论:

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

基本上,您需要执行以下操作:

public class MyHandler:IHttpHandler,IRequiresSessionState

HTH的。

这应该维护处理程序之间的会话状态。也就是说,当您登录时,您对该域中的所有请求只有一个会话。我建议验证你是否真的登录。缓存当然会起作用,因为这对所有会话都很常见,但在服务器上要贵得多,因为它不会轻易消失。