我转用DELPHI不久.刚研究DELPHI的三层技术.为了实验写了一个最简单的模块.
用D7新建一APPLICATION PROJECT,去掉FORM1,添加一个ROMOTE DATA MODULE.代码全部是向导生成.为了调试在RDM的ONCREATE和ONDESTROY里添了两行SHOWMESSAGE.没有添加其他任何组件.生成PROJECT1.EXE.
把PROJECT1.EXE和HTTPSRVR.DLL拷贝到服务器IIS虚拟目录SCRIPTS下.双击PROJECT1注册它.设置SCRIPTS目录的权限到很宽的范围.毕竟这是测试.
在客户端D7 再建一个APPLICATION PROJECT.加入TWEBCONNECTION组件.设置URL为HTTP://SERVER2000/SCRIPTS/HTTPSRVR.DLL.选择SERVERNAME属性,确实从服务器自动读出了PROJECT1.TEST,选择它.但SERVERURL属性没有跟着自动设置.根据帮助看好象该跟着自动设置才对.不管它,试图把CONNECTED属性设置为TRUE.报错:无法启动服务器!.
查看服务器端,PROJECT1确实没有启动,因为没有MESSAGEBOX出现.
把MIDAS.DLL拷贝到SERVER的SYSTEM32目录下注册.故障依旧.
我的SERVER 是W2K ADV SERVER+SP4.WORKSTATION是W2K PROFESSIONAL+SP4.都是开发用机,环境很干净.
有用WEBCONNECTION经验的朋友指点一下.

解决方案 »

  1.   

    客户端使用WebConnection,实际上是通过httpsrvr.dll这个ISAPI对COM Server进行请求转发。这样COM Server的启动账号就是默认的IUSR_XXX(IIS匿名访问账号),而这个帐号是不具备桌面交互权限的,也就是说即使show出了message,由于window station不可见的原因,windows当前登录用户无法看到这个messagebox。所以在调试COM服务器的时候,请注意它的启动账号设置,绝大多数失败都是因为这个设置有问题造成的。另外不要再用showmessage的老办法处理,原因就是我说的,多半show出来你也看不见,还是用别的办法,比如写log文件等等来实现
      

  2.   

    多谢MIRACLE。我明白了,是因为我把PROJECT1的FORM1给删除导致出错的。普通APPLICATION必须有一个FORM吗?就算它是个进程外COM服务器。
    另外代理帐户确实无权显示MESSAGEBOX,更新的PROJECT1把CONNECTED设置成TRUE。SERVER上进程列表确实出现了PROJECT1,不过客户端也挂了。看来SERVER等我按那个看不见的OK按钮呢。我改成BEEP一下就行了。