日期:2014-05-17  浏览次数:20623 次

ASP.NET MVC下服务器响应头没有set-cookie,导致每次请求都生成新的sessionID
使用session时,在不带ASP.NET_SessionId这个cookie去请求的时候,服务器端会生成一个sessionID放到cookie里面,下次带过去。
但是在ASP.NET MVC4项目中,每次请求服务器端都生成了新的sessionID,因为服务器端的headers里面没有set-cookie这一项,实在很让人困惑啊。
对比webform项目和asp.net mvc4项目如下(都是示例项目)
webform:
在请求头中没有cookie的时候,服务器端有set-cookie


ASP.NET MVC4:
因为都是开发服务器(domain都是localhost),所以关闭浏览器程序打开,再去测试mvc的
可以看到客户端没有cookie,服务器端也没有set-cookie,这就导致每次请求得到的都是一个新的sessionID


不知道大家有没有遇到过这个问题。。我也觉得很奇怪,不知道问题出在哪里,用cookieless模式是正常的。
求助啊
ASP.NET ASP.NET MVC MVC session cookie

------解决方案--------------------
你session里有存值吗
session没有存值的情况下是不会在服务器端生成的

------解决方案--------------------
若服务器没有设置cookie 和Session   

客户端的SessionID 每次都是变化的,每次都new一个

一旦设置 设置cookie或Session任意一个,sessionID将固定下来。
------解决方案--------------------
引用:
Quote: 引用:

你session里有存值吗
session没有存值的情况下是不会在服务器端生成的

看来是这个问题
session不存值的话,虽然有生成的sessionID了,但是不会给响应头添加set-cookie

能不能再请教个问题,除了Session["test"] = 123;这样赋值使用的形式,有什么简单直接的方式让Session向客户端发送set-cookie吗?
还是说只能手动去写set-cookie,然后把sessionID的值给ASP.NET_SessionId?


为什么需要生成sessionID?直接说下需求吧
session不存在的话,就算生成sessionid,下次访问也无法找到匹配的session的