教你解决ASP session丢失的方法

Y2J
发布: 2017-05-18 11:33:17
原创
1803 人浏览过

 也许很多asp开发者都会遇到这样的情况:在会话期间(session)无故丢失sessio n。换而言之,丢失了SessionID,同样session级的变量也会丢失。

很多session丢失的原因是因为错误的程序或者是错误的虚拟目录结构。 

SessionID 的改变有下面几个原因。 

原因一: 

Netscape的浏览器会认为"/App/user.asp"跟"/app/user.asp"是两个不同的程序。它会自动地开始一个新的会话期(new session)。所以,才你的网站上一定要统一字母的大小写。 

原因二: 

另外一个是原因是 Session.Timeout 的值。 

Timeout这个属性是用来设置Session的超时时间的,一分钟为单位。假如一个用户,在一个Timeout的时间内没有刷新或者请求页面,那么会话就会结束(the se ssion ends)。当你再次请求页面的时候,一个新的会话有会开始。 

确信Timeout的值,是分钟的。 

格式: Session.Timeout [ = nMinutes] 

原因三: 

假如用户把他们的浏览器的cookie关了,当然session就不能保持。因为session的保持是要靠cookie的。 

要保持Session的状态,浏览器就必须支持cookie,而且在打开的状态。你当然可以用其他的方法 

原因四: 

常犯的错误就是,建立了错误的目录结构。像下面的目录结构: 

root 放了global.asa 

\virtual_root 没有global.asa 

\another_virtual_root 没有global.asa 

调用两个virtual roots的页面,就会执行相同的global.asa(root上的那个) 

另外的一个目录结构: 

root 没有global.asa 

\virtual 放了global.asa 

\another_virtual_root 另外一个global.asa 

每一个不同目录下的global.asa都会各自执行,当然执行的代码就不同了。不过如果里面的代码一样,就令当别说。:) 

所以你在请求不同目录下页面,将会导致不同的global.asa被执行。不同的变量被调用,不同的session id被建立....之前的有用的信息都被破坏了。 

下面是详细的解释: 

当你先浏览子虚拟程序上的页面(child virtual application),然后再去浏览子虚拟程序的上一级的父虚拟程序(parent virtual root)的页面。那些变量就会丢失、破坏。看下面的表格: 

请求 子程序1丢失 子程序2丢失 

先请求                            Root     不会     不会 

只在子程序1之前请求     Root     不会     会 

只在子程序2之前请求     Root     会         不会 

最后请求                        Root     会         会 

【相关推荐】

1. ASP免费视频教程

2.介绍ASP中Session对象的三种方法

3. 详解ASP中Session的使用技巧

4. ASP session简单示例

5. 关于ASP中session的详细介绍

以上是教你解决ASP session丢失的方法的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板