不知道session总是在跳转页面后丢失,很多人说是跳转后形成了新的会话,这我可以肯定的说没有,SessionID我监控看了的一直保持没有变,无论用那种方式都会丢失,求解?
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424" cookieless="false" timeout="20" stateNetworkTimeout="10"/>
C#:
public static UserSessionData MySession
{
get
{
return (UserSessionData)(HttpContext.Current.Session["KeyCacheUserSessionData"]);
}
set
{
if (value == null)
HttpContext.Current.Session.Remove("KeyCacheUserSessionData");
else
HttpContext.Current.Session["KeyCacheUserSessionData"] = value;
}
}
不行勒,网上说的这些东西我都试过咯。高手根据我贴的代码分析哈勒?
感之不尽....
@々孤星☆泪♂: 终于解决咯! 原因我不太清楚,但是问题找到了。
我在登录的时候用的Query的getJSON到后台比对密码和验证码,再存储登录用户的基本信息到Session。当返回的时候,再进去Session就丢失了。网上有人说get取数会重新创建会话,但是这是为什么还待进一步研究,有知道的麻烦讲解下。
@々孤星☆泪♂:
问题根源:
IE6/IE7支持的P3P(Platform for Privacy Preferences Project (P3P) specification)协议默认阻止第三方无隐私安全声明的cookie,Firefox目前还不支持P3P安全特性,firefox中自然也不存 在此问题了。Mircosoft对此的具体描述可以参见 Privacy in Internet Explorer 6
解决办法是在服务器响应时输出P3P的主机头声明:
给个连接 百度文库
http://wenku.baidu.com/view/ea504514866fb84ae45c8d2c.html
贴个C#代码:在Ajax的登录页面**.ashx代码中加入