如何解决 DCOM 的 Visual Basic 客户端服务器应用程序

如何解决 DCOM 的 Visual Basic 客户端服务器应用程序,第1张

当您要实例化一个 COM 时,就会出现该问题的大多数对象在远程计算机上通过 DCOM 与 Dcomcnfg 或网络问题中的设置不正确。问题很少与该代码。

要做的第一件事就是要记下与您的环境和应用程序本身,如相关的信息:

有关在服务器计算机:

在服务器计算机是服务器应用程序即将运行的计算机。收集以下数据:

*** 作系统和安装的服务包。

是否有人登录到计算机?

如果登录是有人他们的权限是什么?他们是否在管理员组的一部分吗?是否他们作为登录域用户吗?

有关客户端计算机中:

客户端计算机是在客户租孙端应用程序即将运行的计算机。收集以下数据:

*** 作系统和安装的服务包。

谁登录到这台计算机?是否它们作为域用户或身份登录本地用户吗?如果作为域用户登录他们在服务器计算机上的权限是什么?他们是否在服务器计算机上管理员组的一部分吗?

有关服务器应用程序:

使用的语言、 版本,和服务包的开发服务器?

不会它回调到客户端吗?

它不会引发事件吗?如果是这样,DCOM 安全设置在客户端计算机上为访问权限授予 所有人 帐户吗?

它有一个用户界面?

它被标记为 无人参与逗型州执行 吗?

它设置安全参数的函数,如 CoInitializeSecurity 或 CoSetProxyBlanket 调用通过以编程方式吗?

有关客户端应用程序:

使用的语言、 版本,和服务包已开发的应用程序?

它设置安全参数的函数,如 CoInitializeSecurity 或 CoSetProxyBlanket 调用通过以编程方式吗?

有关网络:

是否在客户端和服务器计算机上同一局域网 (LAN)?

是否在客户端和服务器计算机连接了 Internet 防火墙和它们之间的代理服务器没有通过?

是否在客户端和服务器计算机连接通过互联网使用防火墙和它们之间的代理服务器吗?

基本故障诊断步骤

检查所有 Dcomcnfg 中的设置合适,基于您在前面收集的数据。

268550如何为 Visual Basic DCOM 客户端/服务器应用程序使用 Dcomcnfg

如果您使用 Microsoft Windows 95 客户端或服务器计算机上,请确保您具有在其上安装 DCOM95。您可以从下面的 Microsoft 网站下载 DCOM95:

http://www.microsoft.com/com/dcom/dcom95/download.asp

如果您在服务器计算机上使用 Windows 95、 Microsoft Windows 98、 Windows Millennium 版 (Me),您将需要对您尝试使用客户端之前运行该服务器组件。作为一种检查验证服务器正在运行并且它正在等待客户端连接。

165101如何使用 Windows 95、 Windows 98 或 Windows Me 为 DCOM 服务器

如果客户端和服务器计算机通过防火墙和它们之间的代理服务器与 Internet 连接,DCOM 无法正常工作,如果没有任何类型的地址转换 (NAT) 在它们之间。如果没有地址转换您需要配置这些代理和防火墙以启用 DCOM 通信。您可以找到几个与 Microsoft 开发人员网络 (MSDN) 或在下面的 Microsoft 网站此主题有关的白皮书:

http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/cnet/cnad_arc_wbak.mspx?mfr=true

此主题不介绍本文中的内容。

其它故障诊断

如果设置为根据您的环境和应用程序功能的权限设置的 Dcomcnfg 后仍有问题,下面是几个步骤,您可能需要解决您的问题:

使用任务管理器来验证服务器未运行时使用 Dcomcnfg 设置中进行更改。因此如果服务器正在运行时更改设置,新设置仅生效的下次启动时服务器启动时,所有设置都分配给进程。

验证的服务器和客户端上正确运行在同一台计算机。您应始终测试您的客户端和服务器运行的正确本地 ; 也就是在同一计算机上远程运行之前。

检查是否都面临的问题实际上是通常与代码本身,一个 DCOM 问题,或如果它是特定于您的应用程序的编码问题。通过使用只山蔽是一种或两个非常简单的方法创建一个非常简单的客户端/服务器应用程序来执行此 *** 作。按照正常的过程的打包和安装。如果您的服务器引发的事件,然后在小示例也应引发事件。 有关更多的信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:

266717如何使用 Visual Basic 创建 DCOM 客户端/服务器应用程序

267836如何使用 Visual Basic 事件与创建 DCOM 客户端/服务器

理想情况下,您应使用上述文章原则是,因为它们带您逐步通过从头最终打包和部署。在您使用的为您的应用程序和查看这是否正常工作,请使用相同的设置。如果您的问题与 DCOM 相关,您面临着同样的问题对小示例应用程序中一样。直到您找到问题的保留故障排除较小的示例问题。 如果小应用程序工作正常但您自己的应用程序不能使用相同的设置,则您可以将面临两个问题:

您的代码中的某些内容就创建问题。例如对于如果在您的代码和您的服务器的身份访问的数据库不具有执行此 *** 作的权限。如果您试图访问的文件或其他对象进行实例化同样的问题,就会发生这种情况。

您的代码很好,但在该注册表如到您的服务器的多个条目中有一些问题。 有关更多的信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:

180525PRB: Dcomcnfg 报告 DCOM 服务器的多个副本

客户端计算机指向错误的服务器计算机。请检查该位置中选项卡 Dcomcnfg 在客户端计算机上。有关更多的信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:

268550如何为 Visual Basic DCOM 客户端/服务器应用程序使用 Dcomcnfg

请验证您具有打包并安装客户端和服务器正确。正确地创建分发程序包是成功的安装基础。有关如何创建 DCOM 客户端/服务器应用程序使用 Visual Basic 分步示例的其他信息,请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:

266717如何使用 Visual Basic 创建 DCOM 客户端/服务器应用程序

267836如何使用 Visual Basic 事件与创建 DCOM 客户端/服务器

验证您的网络正常工作,由客户端从服务器计算机和服务器从客户端计算机执行 ping *** 作。在服务器上打开一个命令提示符窗口,然后执行下面的命令前面 ClientcomputerName 应在客户端计算机的名称:

Ping ClientcomputerName

如果一切工作正常,您应该看到三个或四个答复,在每个时间。如果您看到超时或其他错误,您的网络设置过程中遇到问题,您需要在继续之前,请修复这些。重复使用服务器的计算机名称在客户端计算机上相同的步骤。

在客户端计算机上的 Dcomcnfg,更改通过该服务器的名称替换为服务器的 IP 地址的服务器的位置。如果它工作正常使用的 IP 地址而不是与服务器的计算机名称,然后多个可能必须与您的网络设置的问题。

请尝试重新启动服务器和客户端。有时某些设置缓存在内存和 $ 重新启动后在 Dcomcnfg 中进行更改后,问题解决了。

在 Windows 95 或 Windows 98,使用 $ TCP/IP 协议。若要执行此 *** 作删除 Dcomcnfg 中的默认协议列表中的所有其他协议。

通常,如果 DCOM 问题您得到错误当您试图通过调用 CreateObject 函数或设置对象变量,用 New 关键字实例化远程对象。能够区分如果您收到一条错误消息,由于在创建该对象本身,或者是由于在对象的初始化事件在做什么重要的。如果您试图实例化的对象的初始化事件没有任何的代码,那么毫无疑问您收到该错误与对象的实例化相关。 如果您然而,在初始化事件中的连接到数据库或其他的对象进行实例化的代码应包括内部 Initialize 事件捕获错误,并引发自定义用户错误。如果您不补漏白您内部 Initialize 事件的错误,并且会产生错误,它冒泡出到客户端,并可能将您相混淆。您可能会认为问题在于对象创建时存在的问题是在初始化代码的实际事件。

如果服务器运行在 Microsoft Windows NT 4 或 Microsoft Windows 2000 中,您可以使用事件查看器以了解有关 DCOM 连接失败的原因的其他审核信息。但是,记录这些类型的事件是通常不启用默认情况下。您需要设置审核选项以启用它。

在 Windows NT 4 中启用这些选项,如下所示:

在 Windows 2000 中启用这些选项,如下所示:

一旦激活这些日志记录选项再次测试您的客户端。您收到错误消息后,使用事件查看器查看是否存在任何 DCOM 事件。该事件可能会告诉您原因,访问被拒绝。此外,它可以告诉您谁已登录到客户端计算机上,如果这是一个域用户或本地用户。它可以告诉您客户端请求的协议不是服务器,等上可用。通常,COM 日志被添加到系统日志中。

在 开始 菜单上选择 程序,选择 管理工具,然后选择 本地安全策略。

在左边的窗格中,您将看到一个树视图。单击加号 (+) 号左边的 本地策略,您看到 审核策略 项。选择 审核策略项,请注意在右窗格包含一个已启用哪些,其中一个不是哪些的所有审核选项。右键单击在下列任一选项使您可以启用或禁用它们。

启用审核成功和失败的以下选项: 审核登录事件、 审核对象访问、 审核特权使用。

关闭 本地安全策略 窗口。

在 开始 菜单上选择 程序,选择 管理工具,然后选择 用户管理器。

如果运行的 NT 4 服务器您必须选择一个域 ; 在这种情况下 用户 菜单上选择 域 选项,然后选择本地计算机。

在 策略 菜单上选择 审核 选项。启用审核的成功和失败的前三个项: 登录/注销、 文件和对象访问使用的用户权限。 单击 确定 并关闭用户管理器。

如果您的服务器有多个类和这些类的某些工作,并且其他人不要,检查 Dcomcnfg 中在客户端计算机上的每个类条目。默认状态下,每个类都有其自己的 AppID,并因此,自己设置以便可以正确设置了一些您的类和其他人并不是。 有关客户端的应用程序列表中定位您的服务器的其他信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:

268550如何为 Visual Basic DCOM 客户端/服务器应用程序使用 Dcomcnfg

运行时错误 70: 拒绝

此错误通常与安全设置。此错误是一个比较好的提示方法调用到达目标计算机,所以网络连接可能不是问题在此处。下面是要检查的几个事项:

如果将身份验证级别设置为 连接,验证域用户,而不是本地用户以登录用户登录到客户端计算机。

如果将身份验证级别设置为 连接,验证在服务器计算机实际上属于域。 如果独立的计算机它无法验证该用户,除非您在客户端和服务器计算机上有一个匹配的用户名称/密码。

如果将身份验证级别设置为 无,则检查如果您已设置为客户端和服务器计算机上无此选项。

如果您设置为 无 身份验证级别,并且您已经验证两台计算机有正确的此设置确保客户端和服务器应用程序都不设置以编程方式使用功能,如 CoInitializeSecurity 或 CoSetProxyBlanket 身份验证。以编程方式设置身份验证将覆盖从 Dcomcnfg 该注册表项。

如果您将身份验证级别设置为 无,并且您有非域用户选中如果您在权限包括"每个人"(或"的 World"的 Windows 95 和 Windows 98),并启动权限。

检查所的访问权限和 $ 启动 Dcomcnfg 中的权限,并验证用户登录到客户端计算机上显式包含在这些列表,或属于一个组包含用户。

本文中稍后介绍,请参见"已知问题以检查"。有关更多的信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:

216051FIX: Dcomcnfg NT 4.0 SP4 做不写下 HKCR\APPID.Exe 文件名

使用DCOM,你的应用程序就可以在位晌樱绝置上达到分布性,从而满足你的客户和应用的需求。因为DCOM是世界上领先的组件技术COM的无缝扩展,颂源所以你可以将你宴姿现在对基于COM的应用、组件、工具以及知识转移到标准化的分布式计算领域中来。当你在做分布式计算时,DCOM处理网络协议的低层次的细节问题,从而使你能够集中精力解决用户所要求的问题。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12243003.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存