Frameset中Session丢失

    昨天弄了一天,在Asp.net(.net framework 2.0)中发现:aspx页面嵌入Frameset时,会出现Session丢失的问题。具体情况描述如下:我在IIS(Windows XP)下有两个网站,其中A网站使用了Frameset开发,有些页面会超链接到B网站下的页面,这时如果B网站下用到了Session,B网站的Session就会丢失!两者单独测试时一点问题都没有,Session都正常,就是结合起来用到Frameset时会出现问题。

    在网上找到了解决办法,就是在B网站的页面Page_Load方法中加入如下代码:

    Response.AddHeader("P3P","CP=CAO PSA OUR");

    或者,在IIS中,加入Http头(名称为“P3P”,值为“CP=CAO PSA OUR”,不包括引号);

    这样,Session就不会丢失。同样,使用IFrame的时候,也会出现类似的问题,此时应修改Web.config配置文件:

    <sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="20"/>

    把cookieless="false"改成"true"就可以了。但也同样有个小问题,就是如果页面中采用Javascript的window.location.href=''这样的方式来重定向的话,系统会认为这是另一个新的请求,产生一个新的SessionId,导致原Session同样的丢失。所以对于重定向,还是使用Response.Redirect()比较好。

转载于:https://www.cnblogs.com/strawberryww/archive/2009/04/28/1444980.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值