Delphi中webService服务或者ISAPI注意事项

最近有很多机会接触到Delphi服务的编写以及使用,其实,之前自己对于这种服务的编写不是很了解,当时只清楚在服务中可以建立处理的WebHandleItem来进行自己想要条件的处理,最早的时候还是局限于自己进行query Field的判断来进行处理的,但是之后发现可以再WebHandleItem中建立不同的实例,并通过path来进行区分,应该说这个还是比较方便使用的,不过对于服务程序没有进行过大深入的了解。

上周处理了这样一个问题:之前为了实现地址的缩短,进行了地址的重定向,通过cookie和自己建立Sesscion的方法来实现,最早交付客户使用的时候出现了有时候请求连接不上的问题,最早定位的问题原因是在cookie的设置上,因为最早的时候通过Response的重定向到相同目录时会出现设置cookie不成功,最后使用的是“windows.Location”的方法实现的,所以最早就将为题定位到了此处,由于这个现象不能很好的复现,所以也没有太在意,正巧有个项目组最近在使用这个功能,于是这个问题出现了,而且在那个项目组还是很容易复现的,于是就想彻底追踪一下,通过加log的方式最终将问题找到了,出现问题的地方不是设置cookie而是在查找的时候出现的,我们当时的设计是这样的:

在webmoudle中设置了全局变量Flist,通过读取cookie中的值来在filst中查找,找到后将其中的内容取出,继续后续操作,但是就是这个查找功能总是出现问题。

通过在网上查阅资料发现:在delphi5之后,webmoudle不在是只创建一个,而是根据不同的需要(并发量)会创建多个,于是也就造成了我们的问题:在Flist中明明增加了一项,在后续操作中却找不到内容,这是因为在delphi6中webmoudle会根据需要进行创建,我们的设计方式形成了将内容添加到老的webmoudle中,而在新的webmoudle中查找的问题,于是这样的问题出现后,可以通过多刷几次或者重启服务来实现继续操做,解决办法,设置全局的flist,不依赖于webmoudle来实现操作。

另外值得说的就是:在apache和iis中发布的服务是不一样的,例如url一项就是不同的,所以在使用过程中还需要注意这类问题的处理。

一篇文章比较全面的介绍了webmoudle的内容,提供给大家:http://www.newsmth.net/bbsanc.php?path=%2Fgroups%2Fcomp.faq%2FDelphi%2FNewDig%2FTips%2FOthers%2FVCLWEB%2FM.997201375.A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值