我有一个带有5个.ashx HTTPHandlers的ASP.NET应用程序,它实现了IRequiresSessionState或IReadOnlySessionState。
在调用第一个处理程序时,我创建了一个变量并将其存储在会话中。
当我调用下一个HttpHandler时,变量在会话对象中不可用。
我使用的是context.Session。
我有一个global.asax,我在其中检索sessionId。
有没有办法在HttpHandlers中保留会话变量,还是每个Handler都有自己的会话?
答案 0 :(得分:3)
HeartAttack在这里有一个很好的讨论:
基本上,您需要执行以下操作:
public class MyHandler:IHttpHandler,IRequiresSessionState
HTH的。
这应该维护处理程序之间的会话状态。也就是说,当您登录时,您对该域中的所有请求只有一个会话。我建议验证你是否真的登录。缓存当然会起作用,因为这对所有会话都很常见,但在服务器上要贵得多,因为它不会轻易消失。