ASP教程之ASP避免Session丧失的办法
使用cdonts,可以发送、查看邮件,实现webmail的功能。结合wsh,可以实现对nt主机的管理,如nt用户管理、iis虚拟主机设置、exchange邮箱设置等等,就像管理本地机一样方便。大概良多ASP开辟者城市碰到如许的情形:在会话时代(session)无端丧失session。换而言之,丧失了SessionID,一样session级的变量也会丧失。良多session丧失的缘故原由是由于毛病的程序大概是毛病的假造目次布局。SessionID的改动有上面几个缘故原由。
缘故原由一:
Netscape的扫瞄器会以为"/App/user.asp"跟"/app/user.asp"是两个分歧的程序。它会主动地入手下手一个新的会话期(newsession)。以是,才你的网站上必定要一致字母的巨细写。
缘故原由二:
别的一个是缘故原由是Session.Timeout的值。
Timeout这个属性是用来设置Session的超不时间的,一分钟为单元。假设一个用户,在一个Timeout的工夫内没有革新大概哀求页面,那末会话就会停止(thesessionends)。当你再次哀求页面的时分,一个新的会话有会入手下手。
确信Timeout的值,是分钟的。
格局:Session.Timeout[=nMinutes]
缘故原由三:
假设用户把他们的扫瞄器的cookie关了,固然session就不克不及坚持。由于session的坚持是要靠cookie的。
要坚持Session的形态,扫瞄器就必需撑持cookie,并且在翻开的形态。你固然能够用其他的办法
缘故原由四:
常犯的毛病就是,创建了毛病的目次布局。像上面的目次布局:
root放了global.asa
virtual_root没有global.asa
another_virtual_root没有global.asa
挪用两个virtualroots的页面,就会实行不异的global.asa(root上的谁人)
别的的一个目次布局:
root没有global.asa
virtual放了global.asa
another_virtual_root别的一个global.asa
每个分歧目次下的global.asa城市各自实行,固然实行的代码就分歧了。不外假如内里的代码一样,就令当别说。:)
以是你在哀求分歧目次下页面,将会招致分歧的global.asa被实行。分歧的变量被挪用,分歧的sessionid被创建....之前的有效的信息都被损坏了。
上面是具体的注释:
当你先扫瞄子假造程序上的页面(childvirtualapplication),然后再往扫瞄子假造程序的上一级的父假造程序(parentvirtualroot)的页面。那些变量就会丧失、损坏。看上面的表格:
哀求子程序1丧失子程序2丧失
先哀求Root不会不会
只在子程序1之前哀求Root不会会
只在子程序2之前哀求Root会不会
最初哀求Root会会
有一个注册表的键值(registryentry),叫CheckForNestedVroots(缺省为1)。是设ASP是不是往检测其他目次里的global.asa文件。
假设一个页面被哀求,可是假如在这个被哀求页面的统一目次里没有global.asa这文件,那末asp就会往下级的目次里找。ASP计划就是如许的。另外一方面,假设application被哀求的页面是在root的话,而global.asa也在root,那末ASP就会实行这个在root上的global.asa文件。没有需要往找子目次下的global.asa文件了。
Internet服务办理器,能够把一个目次设成假造的目次,如许的目次是能够具有本人的global.asa文件,固然Application_OnStart和Session_OnStart是少不了的(空话)。
这是个例子。他们都有Global.asa
C:InetPubwwwroot<Home>
Global.asa
C:InetPubwwwrootTest2(Nested)
Global.asa
C:InetPubwwwrootTest2Test3(Nested)
Global.asa
C:InetPubwwwrootTest4
Global.asa
注重:
假如Global.asa文件web哀求时是请求认证的话,那末在Global.asa文件的Session_onStart历程里初始化的变量将会是空的。假如你的global.asa的权限真的是如许设的话,那末将会带来良多的贫苦。比方你会晤到如许的毛病信息:
MicrosoftOLEDBProviderforODBCDriverserror80004005Datasourcenamenotfoundandnodefaultdriverspecified/<webname>/<aspfilename>.asp,linexx
这就是由于Session_onStart内里初始化的session变量是空的(基本就没有初始化)。
别的:这个成绩在win95上不存在。更正确的是说,像在FAT如许的,没有文件权限设置的文件体系里,没有如许的成绩。以是NT的NTFS是有如许成绩的但,win95,98的就没有。
以是,你必需为Global.asa文件设置Internet匿名读取的权限,如许才包管成绩不会产生。
缺乏可以共同遵循的行业标准,ASP还处在发展初期,大家对它的理解不同,如产品和服务标准,收费标准等,不利于行业的健康发展。 Server:这个表示的服务器,操作服务器的一些东西使用这个,如Server.Mappath转换服务器路径,Server.CreateObject实例化一个组件 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) 封装性使得代码逻辑清晰,易于管理,并且应用到ASP.Net上就可以使业务逻辑和Html页面分离,这样无论页面原型如何改变,业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高。 接下来就不能纸上谈兵了,最好的方法其实是实践。实践,只能算是让你掌握语言特性用的。而提倡做实际的Project也不是太好,因为你还没有熟练的能力去综合各种技术,这样只能使你自己越来越迷糊。 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的 弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。 完全不知道到底自己学的是什么。最后,除了教程里面说的几个例子,还是什么都不会。
页:
[1]