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/ymyglhb/p/1445002.html