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

我注意到,首先,在 Request.CookiesResponse.Cookies 集合中都设置了"ASP.NET_SessionId" cookie . 有趣的是,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" cookie,即使它在 Response.Cookies 集合中?

我现在似乎触发它的条件是我将MVC基本控制器标记为 [SessionState(SessionStateBehavior.ReadOnly)] ,这是为了使ASP.NET MVC并行处理多个同时的AJAX请求所必需的 . 否则,它将会话视为共享状态,并在同一会话ID下序列化请求处理 . 从我"m not storing data in the "真正的“会话被标记为只读,我仍然使用ASP.NET生成的SessionID来跟踪它(聪明,嗯?) . 问题是,没有发送cookie,SessionID正在改变每一个新的请求,所以我每次都忘记了用户的会话 . 我似乎无法强制系统发送cookie;有些事情是故意不发送它 .