使用D7做一个分布式应用的Web Service(IsApi类型),在Web service中的接口实现类中,需要调用另外一个系统提供的COM接口去完成特定的功能.使用调试环境或直接编写代码调用另一系统提供的COM,可正常运行且COM接口的系统在任务管理窗口不会同时出现两个实例.但将编译好的IsApi的Web Service分发到IIS实际的环境后,客户端调用的时候,在已经启动了COM接口系统的前提下,又会启动该系统的另一个实例,且运行一会又自动杀掉(实际调用也是这个多起的实例),不知道是什么原因?搞了几天,都不知道是什么原因,真是郁闷啊,哪位高手帮帮我?这种Web service 加 COM接口的形式应该是比较常见的啊,怎么有这种问题?代码大致如下:
procedure TFirstWS.SendSms(Const destPhone,Content:string);//对外提供的接口实现方法
var
comObj:variant;
begin
CoInitialize(nil);
try
comobj:=CreateOleObject('MSS.WSServer');//另一个系统MSS.exe提供的COM接口
comobj.sendSms(destPhone,Content);
finally
CoUninitialize;
end;
end;如何搭建IsApi的Web Service的调试环境,参照的文档:http://bdn.borland.com/article/0,1410,23024,00.html
procedure TFirstWS.SendSms(Const destPhone,Content:string);//对外提供的接口实现方法
var
comObj:variant;
begin
CoInitialize(nil);
try
comobj:=CreateOleObject('MSS.WSServer');//另一个系统MSS.exe提供的COM接口
comobj.sendSms(destPhone,Content);
finally
CoUninitialize;
end;
end;如何搭建IsApi的Web Service的调试环境,参照的文档:http://bdn.borland.com/article/0,1410,23024,00.html
解决方案 »
- 如何用WebBrowser编写多窗口浏览器,像傲游浏览器那样?已经看了一些myie源代码...
- 简单问题,Qreport如何设置在同一张纸的左右半边都打印detail内容?
- 如何替换EXE资源文件中的位图?
- 建议Delphi程序员留下QQ号 方便交流
- 请问做外挂报表用什么比较好
- pb与DELPHI数据库应用开发的比较
- frame控件具体应该怎样使用,它用在什么情况下是最适合的
- dbchart控件的问题!很急的问题!头发都白了
- 求教:F1book6.0中提供了打印预览函数printpriviewex(),不知如何使用。
- 何时需要多线程编程
- 请教大家关于三层结构中AdoQuery参数传递的问题:
- 如何将checkbox镶嵌在菜单上....
你的MSS.exe。。
SHIFT+MOUSE右键===》运行方式这儿来指定运行的用户名。
这种架构是可行的。。你的MSS。EXE进程实例模式也多半是一个单进程多CLIENT的COM,这也是正确的。但IIS下面运行的ISAPI,同你调试时,是属于不同用户的进程。。
这时候COM调用是本机的进程外调用,客户端进程属于哪个用户,服务端进程也必须属于同一个用户。
于是你就看到了两个实例。。你可以在任务管理器里面看看这两个MSS。EXE各是属于哪个用户。。
2,我不熟悉IIS,不过IIS应该有ISAPI执行权限与安全方面配置,比如指定某个用户名执行。。
3,找出那个执行ISAPI的用户后,用那个用户身份执行MSS。EXE话又说回来了,,,楼主为何一定要它们在一个进程中执行呢?
IIS上我没有找到ISAPI执行权限与安全方面配置的地方,只有对所有的权限配置