调用COM+出现“interface not supported”错误(50分)

Z

zhang

Unregistered / Unconfirmed
GUEST, unregistred user!
我在客户端调用服务器的COM+时出现“interface not supported”错误是什么原因(同一台
机器上调用没问题)。客户端代码如下:
const
classid:TGUID= '{7DAEA8E7-3D2A-4CD6-8BDA-9395E21DD8FA}';
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var iroot:IUnknown;
Isum1:Isum;
count,begin
time,endtime:integer;
begin
begin
time:=gettickcount();
iroot:=createremotecomobject('orserver',classid);
Isum1:= iroot as isum;
Isum1.sum(10,count);
endtime:=gettickcount();
edit2.text:=inttostr(endtime-begin
time);
end;

安装客户端时我也是先从服务器的组件服务中导出组件的MSI文件,然后在客户端上安装的。
各位富翁帮帮忙。
 
确定接口定义无误吗?
》》iroot:=createremotecomobject('orserver',classid);
有没有出错
 
当然,不过我的客户端和服务器不在一个域,只是在同一个局域网
 
应该是用户的权限问题,你可以这样试一下:
在服务器上添加一个用户他的用户名和密码和你客户端机器的用户名和密码一样,
客户端不必登录到服务器所在地域,然后尝试调用一下COM+。如果一切OK那么肯定
是权限问题。
另外你可以看看服务器地guest用户是否放开,是否有权限启动和执行你的COM+组件。
 
do
ggo的说法是不全面的,无论是调用DCOM或者是MTS COM+服务对象,
客户端都必须先注册目的对象的类型库(Type Library)。如果你确保
这步已经做了而且是正确的,那么才轮到doggo所说的服务器权限问题。
如果是服务器权限问题,则
1、如果服务对象是MTS COM+,则要修改服务器机器的Windows的MTS控制台的
COM+组件属性;
2、如果服务对象是COM,则要通过Windows的DCOMCNFG.EXE命令进入分布式COM
配置工具,修改COM组件属性。
 
多些Cash_HYJ提醒,我有点想当然的认为注册是没有问题的了,的确应该先检查组件是否
已经注册。
对于win2000的话如果server和client在同一台机器上就没有不必专门做什么了,但是如果
不在同一台机器上则要在client上安装客户端代理。
如果不是win2000那么就需要用命令行进行注册。
 
我们已经解解决了!!!!!
在客户端安装完接口之后,
运行DCOMCNFG->默认属性-》默认身份验证级别:无
默认模拟级别:匿名
运行程序去调用接口,OK!!!
 
问题我移解决,得出结论与doggo ,Cash_HYJ所说一样。谢谢各位 。
 
顶部