ASP.. NET网站HttpContext.Items在HTTPHANDLER中随机为空

本文关键字:随机 HTTPHANDLER NET 网站 HttpContext Items ASP | 更新日期: 2023-09-27 18:01:18

我在访问HttpContext.Items[typeof(UserProfile)]对象时遇到麻烦,有时当Http处理程序被调用时,其中UserProfile是通过表单认证存储在会话cookie中的对象。

当我在同一台机器上打开浏览器时,它100%工作,它正在部署或在visual studio中调试,但当我从远程计算机上测试时,它随机失败。我放入了一些跟踪,基本上HttpContext.Items[typeof(UserProfile)]是空的,即使会话Cookie被成功传递,根据fiddler。

我已经尝试在HTTPHandler中实现IReadOnlySessionState,但它仍然不起作用。我确实意识到,有时候,在登录3分钟或更长时间后,它在之后的时间里100%有效。

对于为什么会发生这种情况和解决方案有什么想法吗?

Thx

ASP.. NET网站HttpContext.Items在HTTPHANDLER中随机为空

会话状态,表单认证和HttpContext.Items都是不相关的-所以不知道为什么你把它们混在一起。表单身份验证有自己的cookie与会话cookie分开,其生存时间可以不同。无论用户是否通过身份验证,都可以拥有会话状态。我也不确定你是如何存储UseProfile对象在会话cookie -建议放一些代码。

HttpContext.Items是与每个HttpRequest相关联的属性包—注意,该集合仅在请求生命周期内可用,并且没有内置机制来持久化该集合。所以它不太可能,你会得到你的UserProfile对象在这个集合,除非你把它在一些模块或global.asax的每个请求。您需要用代码示例解释您正在做什么!