昨天把服务器有win2000换成了win2003,IIS自然也升级到了6.程序中不少地方运用了iframe,相应的问题也出现了。iframe中的文件得不到父页面的session,application也得不到;但是如果一个独立的页面是可以获得到session以及application的(注:这也不是绝对的,有的时候也会丢失),于是就在浩瀚的WWW世界狂google啊,结果令人大失所望……
是不是IIS6的问题呢,因为在IIS5中,这个问题是不存在的,再加上偶刚接触IIS6,相对于IIS5在工作原理上还是有很大差别的。打开IIS管理器,仔细看了看,原来有一个应用程序池……果然问题就出现在了这里,下面向大家详细介绍如何解决在windows2003、IIS6中,asp或者asp.net程序session、application丢失的问题。
1 运行环境:windows2003 + IIS6 + ASP(ASP.NET)
2 问题症状:页面的sessionid会改变,刷新一次改变一次;不能从父页面获得正确的session;iframe中得不到application。
3 解决办法:
a IIS6中相比IIS5增加了一个应用程序池,默认是使用DefaultAppPool,如图一所示。
图一
b 先为站点建立一个应用程序池,打开IIS管理器,右键点击应用程序池-新建-应用程序池,如图二。
图二
c 输入你的应用程序池的ID,这里我输入的是localhost,应用程序设置选择第一项,点击确定,可以在应用程序池下看到新建的应用程序池。如图三、图四所示。
图三
图四
d 对你的每个站点进行设置,进入站点的属性对话框,点击主目录选项卡,将应用程序池选择为刚才新建的,确定,如图五。其他站点操作类似。
图五
现在再看看你的asp或者asp.net的相关程序,是不是关于session以及application的问题已经解决了?
以上是我在解决问题中摸索出来的,如果有不正确的地方请指正!