什么会导致ASP.NET不向客户端发送会话cookie?
我注意到,首先," ASP.NET_SessionId" Cookie已在Request.Cookies
和Response.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;有意无意发送。