1

相同的设置适用于 Windows 7 / 64 位和 Windows Server 2008 / 64 位:

  • Datasnap 服务器应用程序位于已安装的网络驱动器上
  • 在tregsvr 注册<drive>:\path\to\server.exe(作为管理员)
  • GUID 显示在 dcomcnfg 中
  • Socketserver 和 DCOM 服务正在运行

客户端失败并显示错误消息“类未注册”

如果我将服务器应用程序移动到本地目录,并重复进行 tregsvr 注册,客户端可以毫无问题地连接。

我还能检查什么?

4

3 回答 3

2

客户端是否允许连接到网络驱动器?由于客户端实际上正在启动服务器,它应该能够读取该网络驱动器(这正是您所看到的,因为如果服务器在本地驱动器上它工作正常)......

于 2011-11-02T12:05:05.643 回答
1
  1. 服务器不得位于任何共享网络驱动器中
  2. 您必须在客户端注册服务器类型库,否则客户端的 DCOM 将无法理解要实例化的类以及如何通过网络编组其调用。DCOM 将负责要求服务器实例化服务器应用程序。
  3. 在 DCOM 连接中,您必须知道服务器在哪里(IP 或主机名)。
  4. DCOM 必须正确配置:使用 DCOMcnfg.exe 配置哪些用户/组可以实例化和调用服务器

如果您使用的是套接字服务器,它实际上充当代理。是套接字服务器代表客户端进行 DCOM 调用,但调用仍被封装在发送到套接字服务器的数据包中。

于 2011-11-02T13:19:26.330 回答
0

解决了:

  • tregsvr Datasnap 服务器网络位置的 UNC 路径(而不是已安装的网络驱动器)
  • 以 SYSTEM 帐户运行 Socketserver 即可,无需额外权限

从服务器注销后,Datasnap 客户端仍然愉快地与服务器连接

其他/旧服务器正在将 Socketserver 作为具有必要权限的应用程序运行:P

于 2011-11-02T12:57:30.923 回答