虚拟主机网站服务器失去响应怎么办,ASP虚拟主机的网站无故丢失session或超时退出的原因和处理方法...

采用虚拟主机的ASP网站在发布信息时遇到问题,设置session timeout = 60,

可是在几分钟,甚至几秒钟后,session就失效了, 提示超时退出。设置为session

timeout=600也会出现同样的问题。但是在星期六,

在什么也没有改变的情况下,同样程序,运行基本正常,只有偶尔超时退出。在本机测试同样没有问题,本机IIS设置900秒,当然这个站点只有我自己在访问,

不象已经发布的网站,有不同的人在同时访问。

有网友说,如果服务器上iis设置的时间过短。好像session.timeout放在哪里设置的时间都不管用。该网友在自己的服务器上试过!

左右框架结构,左边菜单,右边内容,没有任何清空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丢失原因五

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

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

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.ScriptTimeout,

2. Connection对象的CommandTimeOut属性,

3. Command对象的CommandTimeOut属性,

4. IE浏览器的设置.

Server.ScriptTimeout,默认值是90秒。要增大它,在asp文件中加一句,如下:

Server.ScriptTimeout=900,将页面超时设为900秒。

只设置Server.ScriptTimeout,无论它的值设成多大,仍会出现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.ScriptTimeOut = 500

\’500是设置的脚本超时的时间,秒为单位,具体大小自己调整。

结论:

根据以上分析, 目前只有前面2点不能确定, 那就是在线人数和病毒, 待查证以后确定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值