在我的授权过程中,我需要在会话中设置一些数据,以便它可以随网页提出的每个请求一起移动。只要授权在我的AuthorizationAttribute.AuthorizeCore()中被批准,我就会调用一些服务来检索需要随每个请求一起传送的必要数据,并通过httpContext.Session["MyInfoObject"] = myInfoObject
将其填入会话中,然后返回true。会话数据不会在请求之间持续吗?
会话cookie已设置,下一个请求显示用户现在已通过身份验证。但是,当我尝试检索先前通过var myInfoObject = requestContext.HttpContext.Session["MyInfoObject"] as MyInfoObject;
存储的数据时,整个会话值集合为空。我观察到Session对象,我可以看到Session对象被填充,并且SessionID与浏览器中会话cookie中的SessionID相同,但值集合是空的。没有保存。
任何想法?
更新 我正在检查控制器基类中的会话值。我为我的控制器和Initialize()重写创建了一个自定义基类,我首先调用base.Initialize(),然后开始摆弄Session。在这个阶段,会话值是空的。但是,如果我在Derived控制器的Action上放置一个断点,那么我的值就在那里。我想我错过了管道执行的方式。任何信息都会有帮助。
我先在这里想到的是尝试保存一个简单的字符串,而不是一个复杂的对象,并看看是否能工程。如果有,请检查您的对象是否可序列化。 –