欢迎光临站点互联数据网
设置首页 收藏本站 网站建设 北京网站制作
您当前位置:站点互联首页 > 建站技术 > 正文详细
ASP网站session无故丢失或超时退出的原因和处理方法
站点互联:http://www.sitesky.net 更新时间:2013.1.17

   Asp制作网站,后台经常出现session丢失超时,就是Session失效,退出后台系统有网友说,如果服务器上iis设置的时间过短。好像session.timeout放在哪里设置的时间都不管用。该网友在自己的服务器上试过!

      采用虚拟主机的ASP网站在发布信息时遇到问题,设置session timeout = 60, 可是在几分钟,甚至几秒钟后,session就失效了, 提示超时退出。设置为session timeout=600也会出现同样的问题。但是在星期六, 在什么也没有改变的情况下,同样程序,运行基本正常,只有偶尔超时退出。在本机测试同样没有问题,本机IIS设置900秒,当然这个站点只有我自己在访问, 不象已经发布的网站,有不同的人在同时访问。

左右框架结构,左边菜单,右边内容,没有任何清空session的语句。

所以基本可以确定2点, 1、服务器IIS时间设置基本没有问题, 2、程序没有问题。那么问题到底在什么地方?

其实很多ASP开发者都会遇到这样的情况:在会话期间(session)无故丢失session。丢失了SessionID,同样session级的变量也会丢失。

很多session丢失的原因是因为错误的程序或者是错误的虚拟目录结构。SessionID 的改变有下面几个原因。

session丢失原因一

虚拟主机在线人数超过限制,导致前面的访问者被强制退出。 访问静态页面表现为无法连接, 访问ASP等动态页面, 表现为会话期间(session) 丢失,导致超时退出。解决办法只有扩大在线人数。

session丢失原因二

网站或空间被病毒或木马攻入, 修改或改变session, (session)丢失,导致超时退出。

session丢失原因三

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

session丢失原因四

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

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

格式: Session.Timeout [ = nMinutes]

session丢失原因五

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

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

session丢失原因六

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

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被建立....之前的有用的信息都被破坏了。

session丢失原因七

有些杀病毒软件会去扫描您的Web.Config文件,那时Session肯定掉,这是微软的说法。

session丢失原因八

服务器内存不足产生session丢失。

session.timeout 设置

session.timeout可以在网页的最开头设置,或者在创建session变量页面的最开头设置。

<%
session.timeout=20
%>

影响服务器产生超时的因素

1. Server.Timeout,
2. Connection对象的CommandTimeOut属性,
3. Command对象的CommandTimeOut属性,
4. IE浏览器的设置.

Server.Timeout,默认值是90秒。要增大它,在asp文件中加一句,如下:
Server.Timeout=900,将页面超时设为900秒。

只设置Server.Timeout,无论它的值设成多大,仍会出现timeout错误。

Connection对象和Command对象有个CommandTimeOut属性,默认是30秒,如果有一个耗时的查询或数据处理,很容易就超时了。要增大它,创建对象后,设置它的属性,如下:

con.CommandTimeOut = 900,
设为900秒,其中con是一Connection对象。如设为零,将无限等待,没有这一timeout限制。

Command对象不会继承Connection的这一属性,所以对可能超时的Command也要单独设置CommandTimeout属性。

最后IE也有个超时设置,5分钟从服务器得不到数据,也超时。

解决方法:(原文请参照微软KB中的Q181050)
1. IE要4.01 sp1以上版本.
2. 在注册表中HKEY_CURRENT_USERSoftwareMicrosoft WindowsCurrentVersionInternet Settings 中加一DWORD类型ReceiveTimeout,值设为比如8个9。
3. restart computer.

解决asp脚本运行超时的处理方法

脚本超时和这里的SESSION超时不是同一个问题, 不过顺便一起列出。

IIS默认的脚本超时时间是90秒。上传软件或者传送数据大于90秒的时候就会产生进程脚本超时放弃执行,保护服务器的处理大容量数据内存以及CPU占用,过大导致死机或者不稳定的情况。处理办法是:

1、在IIS所在网站的属性里点击 - 主目录 - 然后配置 - 选项 - 里ASP/CGI脚本超时,大小设置高一些。

2、直接在程序的头部加入
Server.TimeOut = 500
\’500是设置的脚本超时的时间,秒为单位,具体大小自己调整。

建站技术工具箱
HTML转JS代码工具
轻松把HTML转化为JS格式
字母大小写转换工具
快速把英文字母大小写转化
CSS代码格式化工具
实现CSS代码格式化和在线压缩
JS/HTML格式化工具
轻松把代码美化,压缩,混合加密
经典SQL语句大全
SQL经典语句使用、查询大全
站点互联首页 - 广告合作 - 免责声明 - 网站推广 - 网站建设 - JS特效代码 - 关于我们 - 联系我们 - 友情链接 - 网站地图
版权所有:站点互联 Copyright © 2010-2015 www.Sitesky.Net All rights Reserved
联系电话:18610130465 SEO优化技术