首页 新闻 会员 周边 捐助

Asp.net页面跳转Session丢失问题

0
悬赏园豆:30 [已解决问题] 解决于 2011-09-13 13:53

不知道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;
}
}

UserSessionData 类下有UserID,UserName...等等4、5个有用属性吧
用JS    window.location = "Default.aspx";跳转
无论如何为都在跳转后的页面获取不到Session,求解???

々孤星☆泪♂的主页 々孤星☆泪♂ | 初学一级 | 园豆:13
提问于:2011-09-08 20:34
< >
分享
最佳答案
1

是不是这篇文章里谈到的原因呢:http://www.cnblogs.com/zhc088/archive/2011/07/24/2115497.html

收获园豆:30
artwl | 专家六级 |园豆:16736 | 2011-09-08 20:55

不行勒,网上说的这些东西我都试过咯。高手根据我贴的代码分析哈勒?

感之不尽....

々孤星☆泪♂ | 园豆:13 (初学一级) | 2011-09-08 21:04

@々孤星☆泪♂: 终于解决咯! 原因我不太清楚,但是问题找到了。

我在登录的时候用的Query的getJSON到后台比对密码和验证码,再存储登录用户的基本信息到Session。当返回的时候,再进去Session就丢失了。网上有人说get取数会重新创建会话,但是这是为什么还待进一步研究,有知道的麻烦讲解下。

々孤星☆泪♂ | 园豆:13 (初学一级) | 2011-09-08 23:22

@々孤星☆泪♂: 

问题根源:

  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代码中加入

if (context.Request.Browser.Browser.ToUpper().Contains("IE"))
        context.Response.Headers.Add("P3P", "CP=CAO PSA OUR");
凡夫·俗子 | 园豆:250 (菜鸟二级) | 2013-09-21 09:37
其他回答(1)
0
1 if (value ==null)
2     HttpContext.Current.Session.Remove("KeyCacheUserSessionData");
是不是这里你给移除了,才没有值得
梅莲芳 | 园豆:669 (小虾三级) | 2011-09-13 11:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册