我有一个带有 5 个 .ashx HTTPHandler 的 ASP.NET 应用程序,它们实现 IRequiresSessionState 或 IReadOnlySessionState。
调用第一个处理程序后,我创建一个变量并将其存储在会话中。
当我调用下一个 HttpHandler 时,该变量在会话对象中不可用。
我正在使用 context.Session。
我有一个 global.asax,我在其中检索 sessionId。
有没有办法在 HttpHandler 之间保留会话变量,或者每个处理程序都有自己的会话?
HeartAttack 在这里对此进行了很好的讨论:
http://weblogs.asp.net/ashicmahtab/archive/2008/09/18/how-to-use-session-values-in-an-httphandler.aspx http://weblogs.asp.net/ashicmahtab/archive/2008/09/18/how-to-use-session-values-in-an-httphandler.aspx
基本上,您需要执行以下操作:
public class MyHandler:IHttpHandler,IRequiresSessionState
HTH's.
这应该维护跨处理程序的会话状态。也就是说,当您登录时,您只有一个会话可以处理对该域的所有请求。我建议验证您是否确实登录。缓存当然可以工作,因为这对于所有会话都是通用的,但在服务器上要昂贵得多,因为它不容易消失。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)