三层结构的集成(100分)

  • 主题发起人 主题发起人 linz
  • 开始时间 开始时间
L

linz

Unregistered / Unconfirmed
GUEST, unregistred user!
在三层结构中,客户端程序已启动,服务器端com+组件也被激活,
客户端却显示"Interface not supported",Why?
 
你的server端不要用exe文件,直接用组件的方式。
 
这是你的客户端没有注册该COM+组件,看李维的那本<实战Delphi5.x ADO/MTS/COM+>的第八章.
在大富翁上搜一下应该也有类似问题.
Interface not supported就是表示"界面未提供!"说明你的客户端没有安装该COM+的客户端
组件,或组件有升级你没有更新.GOOD LUCK!
 
以上答复中所述问题原因均不存在,另外如果客户端程序如在另外的机上开发,Dcomconnection控件的
ComputerName属性设为服务器计算机名后,ServerName属性下拉列表中不显示任何已注册的服务器机上的组件
因此无法做前端开发,如果在同一台机上就不存在此问题。Why?
 
你是你在服务端测试程序就不会出现这种情况?因为服务器上在你运行服务程序时已经注册了.
而你在另一台客户机上运行上当然需要注册.我不清楚你是用的COM+还是DCOM?若是COM+请看
看我上面提的那本书,若是DCOM,请看李维的<分散式多层应用>,答案都应该在书中很找到.
写程序许多时候需要自己多判断.Interface not supported
就是表示"界面未提供!"说明你的组件注册方面有问题,你的客户端程序找不到提供的界面.
你先运行客户端看看,若你的组件已经安装,会自动启动服务端.若先报错,说明客户端没有找到.
反正应该就是你的组件注册问题.你在客户端怎么调用的COM+组件?你服务端的代码是不是贴
的?服务端的GUID与客户端的GUID会不会有什么问题?大不了,你再重新写一下,一步一步紧凑
着来.做得多了,你就自然有经验了.还有,你在MIDAS/DCOM中的已答问题中查查看,有许多资
料的,你可以找找看有没有你想要的资料.
 
尊敬的zhangkan大侠:我是在windows2000服务器上作的mts组件和客户端,当然运行一切顺利
把客户端程序移到另一台机后,也注意到分发和安装客户端组件(在windows2000 Component
Service中导出).我运行客户端的时候特意注意是否启动服务器组件,一切说明是客户端激活了服务器组件!
可是出错!这个操作过程有问题吗?是不是组件还需要特别的设定?敬请发表高见,谢谢!
 
我告诉你:
客户机没有合法登录网络
 
张Sir: 什么叫“客户机合法登陆网络”,我这里所有机器都是友好登录,客户机访问服务器时要输入密码和用户
名的,能告诉我该如何做吗?
 
MTS有用户权限的限制,这点你考慮没有?!
 
我想应该不是权限的问题,若权限出问题出错的信息应该是权限方面的.而这儿是说的界面没
提供.你说客户端能激活程序,说明也是有效的.那么有一点你需要考虑了.你注意是调用哪一
个组件的时候出问题了.我想也许是这种情况,你在服务器上先导出客户端,后来又改了一下
服务端组件,照成服务端与客户端安装的不一致.现在再试一种方法,你将服务器端上的COM+
在Delphi中全部卸掉,重新将全部的组件重新安装,重新导出到客户端,然后将客户端全部删
掉,再在客户端重新安装.如此之后再试.你的客户端能激活服务程序,说明客户端安装是成功
了的.那么就只能考虑两边不一致了.若这样还不能解决,那么恐怕我也帮不了你了.不过,你
也得将你的编译环境说清楚,服务器和客户端是什么系统,机器型号,Delphi版本.这样,判断
起来也清楚一点.再试试吧! GOOD LUCK!
程序员遇到问题时是最痛苦的时候,但解决问题后即又是最舒服的时候.
 
zhangkan大侠所述我照做过,现在我想是否是我服务器windows2000操作系统中的用户环境没有设置的原因?
就是要在操作系统中设置做试验用的那台客户机为合法注册用户以及它所属的用户组什么的,是吗?
 
定义变量
public withevents rdso as rds.datacontrol
dim rs as adodb.recordest
建立RDS对象
private sub form_load()
set rdso= new rds.datacontrol
end sub
打开RDS
private open()
rdso.server="http://127.0.0.1"
rdso.connect="procider=microsoft.jet.oledb.3.51;"&amp;_
"data source=c:/mdb/1.mdb"
rdso.sql="select * from book"
rdso.executeoptions=adcexecasync
rdso.fetchoptions=adcfetcbackground
rdso.refresh
end sub
检查RDS
private sub rdso_onreadystatechange()
if ...
set rs= rdso.recorset
...
end sub
以上是用vb编写的代码,如果用DELPHI应该如何编写??
stevensoft@163.net
 
检查一下组件服务COM+应用程序属性页面中,“安全设置”-》“授权”=》“强制组件访
问检查”和相应的各个组件的属性页面中的“安全设置”-》“授权”=》“强制组件访问
检查”中的设置是否一致,因为默认是不一致的。最好先把该选项选中试试看。
 
我也遇到过同样的问题
后才知道客户端也必须安装COM+组件(导出成客户端)
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部