C# ASP.NET网站HttpContext。HTTPHANDLER中的项随机为空

C# ASP.NET网站HttpContext。HTTPHANDLER中的项随机为空,c#,asp.net,forms-authentication,httphandler,httpcontext,C#,Asp.net,Forms Authentication,Httphandler,Httpcontext,有时调用Http处理程序时,访问HttpContext.Items[typeof(UserProfile)]对象时遇到问题,其中UserProfile是通过表单身份验证存储在会话cookie中的对象 当我在VisualStudio中部署或调试浏览器的同一台机器上打开浏览器时,它会100%正常工作,但当我从远程计算机进行测试时,它会随机失效。我进行了一些跟踪,根据fiddler的说法,HttpContext.Items[typeof(UserProfile)]基本上是空的,即使会话Cookie成功

有时调用Http处理程序时,访问HttpContext.Items[typeof(UserProfile)]对象时遇到问题,其中UserProfile是通过表单身份验证存储在会话cookie中的对象

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

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

关于为什么会发生这种情况以及解决方案,有什么想法吗


Thx

会话状态、表单身份验证和
HttpContext。项目
都是不相关的-所以不确定为什么要混淆它们。表单身份验证有自己的cookie,与会话cookie不同,并且其生命周期可以不同。无论用户是否已通过身份验证,您都可以拥有会话状态。我也不确定您是如何在会话cookie中存储
UseProfile
对象的-建议输入一些代码


HttpContext.Items
是和每个
HttpRequest
关联的属性包-请注意,此集合仅在请求生命周期内可用,并且并没有用于持久保存集合的内置机制。因此,除非您将
UserProfile
对象放在某个模块或global.asax中的每个请求中,否则您不太可能在该集合中获取该对象。你需要解释你到底在做什么,也许是用代码示例

我用的是IReadOnlySessionState,因为我没什么点子了,它是在谷歌搜索时出现的,我想我提到了它,所以人们不会用它来回答我。用户配置文件从global.asax中会话cookie中的票证中提取,并分配给HttpContext.Items。但有时它在http处理程序(在部署的服务器上)中仍然为空。@Titan,你能发布将数据放入会话cookie和从会话cookie中取出的代码吗?使用会话cookie存储自定义数据有点不寻常-我宁愿选择一个单独的cookie!