ASP.NET不发送会话cookie

时间:2016-11-03 20:53:20

标签: asp.net session session-cookies

什么会导致ASP.NET不向客户端发送会话cookie?

我注意到,首先," ASP.NET_SessionId" Cookie已在Request.CookiesResponse.Cookies个集合中设置。有趣的是,cookie实际上并不是请求的一部分,但Request.Cookies集合似乎是实际与请求一起发送的cookie和响应中的cookie的动态组合。因此,如果您向Response.Cookies集合添加Cookie,它会立即反映在Request.Cookies集合中。

无论如何.... cookie肯定在Response.Cookies集合中。你甚至可以通过调用new SessionIDManager().SaveSessionID(HttpContext.Current, HttpContext.Current.Session.SessionID, out redirected, out cookieAdded)来获取它两次,并且cookieAdded将返回true,现在将有两个名为" ASP.NET_SessionId"而不是一个。

但是cookie永远不会随着响应一起发送。什么代码或一组条件决定不发送" ASP.NET_SessionId"即使它出现在Response.Cookies集合中,也会收到回复的Cookie?

我现在似乎触发它的条件是我将MVC基本控制器标记为[SessionState(SessionStateBehavior.ReadOnly)],这对于ASP.NET同时并行处理多个同时的AJAX请求是必要的。 MVC;否则,它将会话视为共享状态,并在同一会话ID下序列化请求处理。因为我没有在"真实"中存储数据。会话被标记为只读,我实际上将会话数据存储在静态位置并自己管理并发,但我仍然使用ASP.NET生成的SessionID来跟踪它(聪明,嗯? )。问题是,如果没有发送cookie,SessionID会随着每个新请求而改变,所以我每次都会忘记用户的会话。我似乎无法强制系统发送cookie;有意无意发送。

0 个答案:

没有答案