解决ASP会话丢失的问题

介绍

这篇文章主要介绍了解决ASP会话丢失的问题,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获。下面让小编带着大家一起了解一下。

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

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

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

原因一:

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

原因二:

另外一个是原因是会话。超时的值。

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

确信超时的值,是分钟的。

格式:会话。超时(=nMinutes]

原因三:

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

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

原因四:

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

根放了全球。asa

\ virtual_root没有全球性的。asa

\ another_virtual_root没有全球性的。asa

调用两个虚拟的根页面,就会执行相同的global.asa(根上的那个)

另外的一个目录结构:

根没有全球性的。asa

\虚拟放了全球。asa

\ another_virtual_root另外一个全球性的。asa

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

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

下面是详细的解释:

当你先浏览子虚拟程序上的页面(儿童虚拟应用程序),然后再去浏览子虚拟程序的上一级的父虚拟程序(父虚拟根)的页面。那些变量就会丢失,破坏。看下面的表格:

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

先请求,,,,,,,,,,,,,,根,不会,,不会

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

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

最后请求,,,,,,,,,,,,根,会,,,,会

感谢你能够认真阅读完这篇文章,希望小编分享解决ASP会话丢失的问题内容对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,遇到问题就找,详细的解决方法等着你来学习!

解决ASP会话丢失的问题