以前用Delphi做的Web Service在XP调试环境和Windows 2003 SP1运行的都挺好,但是近日需要再次部署一下,于是装了一个Windows 2003 SP2,却在使用过程中发现一只链接不上数据库。

程序是使用ODAC NET模式直接连接的ORACLE,不需要客户端,因为程序中有webservice读取注册表,按照以前在xp和win2003 sp1的做法,赋予了iis运行账户的权限,但是却一直提示ORACLE用户名和密码不正确,所以无法继续。翻阅了IIS的帮助和又在XP上实验了一下,确实是可以的,确定为设置问题。

接着,翻看IIS的选项,发现Windows 2003 SP2的IIS和SP1的IIS貌似改变有些大,一直不接触IIS,没想到IIS现在发展的很强劲。看到了有一个默认应用程序池,单击右键选择属性,然后选择默认运行帐户为本地帐户,问题解决。也可以新建一个应用池,专门用来跑Webservice,这样可以避开本地用户权限过大的问题。

总结一下,Delphi开发的ISAPI的WebService在Windows 2003上面部署的必须条件:

1.  IIS Web服务扩展中需要打开所有未知的ISAPI选项

2. 如果用到了ODAC等需要Users权限的组件等,IIS 的默认应用池,即有自己所写的Webservice的那个应用池,需要选择默认运行用户为本地用户。

3. 如果操作了注册表或者访问了某个目录,需要给IIS运行用户IWAN,IUSER赋予相应的权限

发表评论

电子邮件地址不会被公开。 必填项已用*标注