简单问题:如何解决ISAPI公用变量的问题,怎么打开多个SESSION?300分!!!(300分)

  • 主题发起人 主题发起人 robles
  • 开始时间 开始时间
R

robles

Unregistered / Unconfirmed
GUEST, unregistred user!
最近作一个小的ISAPI程序,需要把IE上输入的一个数字存在ISAPI里的一个变量里,
经过一番计算后把结果返回到IE窗口.
现在遇到一个问题,如果同时有2个以上的用户分别打开一个IE输入不同的数字,
那么,ISAPI里的那个变量的值就会变成最后输入的数字,就相当于这个变量是公用的变量.
而我的本意是每个用户输入的数字各自独立的计算,也就是每个IE打开一个SESSION.
各自不会相互影响.
但是看起来DELPHI的ISAPI只打开了一个SESSION,无论有多少IE输入.
那位大虾做过ISAPI的,给俺说说如何避免这个问题.
 
关于这个问题我们没有遇到过。做了一个isapi的大型系统。
但是我们的session用的是cgiexpert这个组件中的一个组件。

 
Q1:那就不要设公共变量,设局部变量啦。
Q2:用RESPONSE里面的COOKIE来实现,读取用REQUEST里面的COOKIE,不设日期即是和
SESSION一样了(ASP就是这么实现的),但是要注意:DELPHI里面有时会把第一个COOKIE
字段“吃掉”所以最好多设几个以备不测。
 
问题就是局部变量如何设置,无论是到在PUBLIC,PRIVATE还是使用THREADVAR,都没有效果.
是不是ISAPI无法实现SESSION?
能不能不用COOKIES,因为用户可以把COOKIES关掉.
 
问题1:这个嘛。。。我说的私变量指的是过程内的局部变量如果你用那些关键字的话
就会得到上次作业留下的缓存,所以嘛。。。
问题2:你去IE的设置菜单里面看一看,就会知道了,COOKIE分两种一种是“经典”COOKIE
另一种叫非存储COOKIE,也就是SESSION,再说了,不是每个用户都那么神经质的。。。
 
我知道COOKIES有两种,但是用户都可以在IE里关掉.
还是不希望用COOKIES来实现SESSION.
ASP,PHP是怎么实现SESSION的,好像不用COOKIES也可以呀?
 
告诉你吧,这个问题不是isapi的问题. 按照isapi的工作原理,每一个用户应该是自动生成一个线程的.
问题出在iis上.iis的主目录->设置中,把应用程序缓存去掉.就ok了.
 
to qdlzq_cn:
我好像没有找到IIS设置应用程序缓存的地方,我用NT下的IIS2.0
另外,我的ISAPI中如果有多个ACTIONITEM得话,每个ACTION都是一个线程的,并不是一个用户(IE)一个线程.

 
在iis -->主目录 -->设置-->缓存IISAPI应用程序(不要选上该项)
 
ASP的SESSION肯定是用COOKIE实现的。。。
 
再你的WebModule上面加上BDE的Session控件 , 并把AutoSessionName,和Active 属性
设为true 再试试?;
由于isapi是线程的,建议不要用全局变量,用局部变量方法有3 :
1 在private 中声明
2 在过程,函数中声明
3 自己想,哈哈。
 
to :hpn_cao(小海)
你说的俺都试过了.
 
别忘了把Cookie打开,和ASP一样,BDE的session也需要Cookie ,还有,最好别在同一ip
登录两个用户。
 
faint,都试过了,一点用也没有
 
此问题解决,我也给分。
我的问题是:在ACTION中为TQUERY对象的sql属性设定sql语句,产生2万条纪录,分页显示。
和robles的问题相同,如果同时有2个以上的用户同时使用,选2-200页中的某一页,显示出来
的是最后一次查询的结果,即action没有运行,而tquery对象的数据被最后的查询刷新。
我使用的是websnap的adapterpageproducer
WebModule上面加上BDE的Session控件 , 并把AutoSessionName,和Active 属性设为true
也不好用。

关注!!!
 
我以前的做法是把各自"变量"记在IE打开的网页上,计算时再从网页上读就行了。
 
to wind2000:
我现在也是这样做的,把数据放在INPUT HIDDEN里边,换叶面得时候SUBMIT过去,
效果很好,不过比较麻烦,我就想知道有没有更简单得做法.
 
还是自己操作cookie吧
to wind2000
用input hidden,如果换页时只是个普通连接,没法submit该怎么办?
 
自己操作cookie
或,把各自"变量"记在IE打开的网页上,计算时再从网页上取出来
 
解决了么?没解决的话,把你的邮箱给我,我告诉你怎么解决!
 
后退
顶部