asp.net IIS session丢失 session Key丢失
真是累啊!为了找到解决方案google了多少篇文章浏览了多少个页面。在前两天把我的asp.net项目做好,很是高兴的把项目进行发布。等发布好放在服务器上一测试,我惊呆了!!在登录页面输入正确的账号和密码后进入主窗体不到3秒就整个返回登录界面!这是怎么一回事啊,不可能哦,这个情况肯定是页面Session为空才会返回登录界面。
我想不可能啊!于是把源码在本地测试了一次,没事啊,每一个页面的Session都有值啊!就怀疑是发布的时候出错了,于是再次发布一次。可是还是不行。到底是什么错误啊!由于自己饭项目不再用以前的模版页来做,是用frame框架来实现的。于是google了一下:IFrame中Session丢失的解决办法。呵呵,果然一大堆,在看了之后发现了有很多的解决方案。
其中①在session写入页面加入:Response.AddHeader("P3P", "CP=CAO PSA OUR");
②IFrame中Session丢失的解决办法 在开发中,我们经常会遇到使用Frame来工作,而且有时是为了跟其他网站集成,应用到多域的情况下,而Iframe是不能保存Session的。因此,网上可以找到很多相关的文章,如果网站可以采用设置Web.Config中的配置:
<sessionState mode="StateServer" stateConnectionString="tcpip=127.0.0.1:42424"
sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="40" />
把cookieless="false"改成"true"就可以了。但也同样有个小问题,就是如果页面中采用Javascript的window.location.href=''这
样的方式来重定向的话,系统会认为这是另一个新的请求,产生一个新的SessionId,导致原Session同样的丢失。所以对于重定向
,还是使用Response.Redirect()为好
③除了Ifrmae有丢Session问题外,frameset也有同样的问题。Frameset的问题更不移定,是有时会丢,有时不会丢,这更认人头痛在网上找到了一个方法,在页面page_onload里添加一语句: Response.AddHeader("P3P","CP=CAO PSA OUR");
等等还有很多自己都一一的去试啊试啊!刚开始的时候还信心挺大的,当一次一次测试失败的时候,那种心情可真叫人烦啊!东西做好了却不能使用!老天为什么要那样子惩罚我呢!在这段时间里自己脾气很是暴躁。还想过放弃!!写后台我没问题,发布上线以前真是不怎么深入过,而现在又没有人可以帮到忙,感觉自己很是无助!!
一直都以为是程序的错误,认为IIS的配置已经没有问题了!呵呵,在这么一番折磨后,我被逼无奈思维转向IIS。也是google了n个网页后突然看到一篇关于介绍:windows2003 + IIS6 + ASP(ASP.NET)的文章了,看了一下,真是有一种柳暗花明又一村的感觉啊!原来是这个程序池的错误!IIS6.0啊,哈哈,真是苦死我了!